github.com/eframework-cn/EP.GO.UTIL@v1.0.0/xtime/xtime.go (about)

     1  //-----------------------------------------------------------------------//
     2  //                     GNU GENERAL PUBLIC LICENSE                        //
     3  //                        Version 2, June 1991                           //
     4  //                                                                       //
     5  // Copyright (C) EFramework, https://eframework.cn, All rights reserved. //
     6  // Everyone is permitted to copy and distribute verbatim copies          //
     7  // of this license document, but changing it is not allowed.             //
     8  //                   SEE LICENSE.md FOR MORE DETAILS.                    //
     9  //-----------------------------------------------------------------------//
    10  
    11  // 时间常用函数封装,如获取时间戳、时间格式化等.
    12  package xtime
    13  
    14  import (
    15  	"time"
    16  )
    17  
    18  const (
    19  	STRING_TIME_FORMAT_FULL = "2006-01-02 15:04:05 +0800 CST" // 时间格式化模板(标准)
    20  	STRING_TIME_FORMAT_LITE = "2006-01-02 15:04:05"           // 时间格式化模板(简易)
    21  	STRING_TIME_FORMAT_FILE = "2006-01-02_15_04_05"           // 时间格式化模板(文件)
    22  )
    23  
    24  const (
    25  	SEC_1   int = 1       // 1秒
    26  	SEC_5   int = 5       // 5秒
    27  	SEC_10  int = 10      // 10秒
    28  	SEC_15  int = 15      // 15秒
    29  	SEC_20  int = 20      // 20秒
    30  	SEC_25  int = 25      // 25秒
    31  	SEC_30  int = 30      // 30秒
    32  	SEC_35  int = 35      // 35秒
    33  	SEC_40  int = 40      // 40秒
    34  	SEC_45  int = 45      // 45秒
    35  	SEC_50  int = 50      // 50秒
    36  	SEC_55  int = 55      // 55秒
    37  	MIN_1   int = 60      // 1分钟
    38  	MIN_2   int = 120     // 2分钟
    39  	MIN_3   int = 180     // 3分钟
    40  	MIN_4   int = 240     // 4分钟
    41  	MIN_5   int = 300     // 5分钟
    42  	MIN_6   int = 360     // 6分钟
    43  	MIN_7   int = 420     // 7分钟
    44  	MIN_8   int = 480     // 8分钟
    45  	MIN_9   int = 540     // 9分钟
    46  	MIN_10  int = 600     // 10分钟
    47  	MIN_12  int = 720     // 12分钟
    48  	MIN_15  int = 900     // 15分钟
    49  	MIN_20  int = 1200    // 20分钟
    50  	MIN_25  int = 1500    // 25分钟
    51  	MIN_30  int = 1800    // 30分钟
    52  	MIN_35  int = 2100    // 35分钟
    53  	MIN_40  int = 2400    // 40分钟
    54  	MIN_45  int = 2700    // 45分钟
    55  	MIN_50  int = 3000    // 50分钟
    56  	MIN_55  int = 3300    // 55分钟
    57  	HOUR_1  int = 3600    // 1小时
    58  	HOUR_2  int = 7200    // 2小时
    59  	HOUR_3  int = 10800   // 3小时
    60  	HOUR_4  int = 14400   // 4小时
    61  	HOUR_5  int = 18000   // 5小时
    62  	HOUR_6  int = 21600   // 6小时
    63  	HOUR_7  int = 25200   // 7小时
    64  	HOUR_8  int = 28800   // 8小时
    65  	HOUR_9  int = 32400   // 9小时
    66  	HOUR_10 int = 36000   // 10小时
    67  	HOUR_11 int = 39600   // 11小时
    68  	HOUR_12 int = 43200   // 12小时
    69  	HOUR_13 int = 46800   // 13小时
    70  	HOUR_14 int = 50400   // 14小时
    71  	HOUR_15 int = 54000   // 15小时
    72  	HOUR_16 int = 57600   // 16小时
    73  	HOUR_17 int = 61200   // 17小时
    74  	HOUR_18 int = 64800   // 18小时
    75  	HOUR_19 int = 68400   // 19小时
    76  	HOUR_20 int = 72000   // 20小时
    77  	HOUR_21 int = 75600   // 21小时
    78  	HOUR_22 int = 79200   // 22小时
    79  	HOUR_23 int = 82800   // 23小时
    80  	DAY_1   int = 86400   // 1天
    81  	DAY_2   int = 172800  // 2天
    82  	DAY_3   int = 259200  // 3天
    83  	DAY_4   int = 345600  // 4天
    84  	DAY_5   int = 432000  // 5天
    85  	DAY_6   int = 518400  // 6天
    86  	DAY_7   int = 604800  // 7天
    87  	DAY_8   int = 691200  // 8天
    88  	DAY_9   int = 777600  // 9天
    89  	DAY_10  int = 864000  // 10天
    90  	DAY_15  int = 1296000 // 15天
    91  	DAY_20  int = 1728000 // 20天
    92  	DAY_30  int = 2592000 // 30天
    93  )
    94  
    95  // 获取时间戳(微秒)
    96  func GetMicrosecond() int {
    97  	ltime := time.Now().UnixNano() / 1e3
    98  	return int(ltime)
    99  }
   100  
   101  // 获取时间戳(毫秒)
   102  func GetMillisecond() int {
   103  	ltime := time.Now().UnixNano() / 1e6
   104  	return int(ltime)
   105  }
   106  
   107  // 获取时间戳(秒)
   108  func GetTimestamp() int {
   109  	ltime := time.Now().Unix()
   110  	time.Unix(0, 0).Format("")
   111  	return int(ltime)
   112  }
   113  
   114  // 获取当前时间
   115  func NowTime() time.Time {
   116  	return time.Now()
   117  }
   118  
   119  // 时间戳(秒)转时间(object)
   120  //	timestamp: 时间戳
   121  func ToTime(timestamp int) time.Time {
   122  	return time.Unix(int64(timestamp), 0)
   123  }
   124  
   125  // 获取距离零点的时间(秒)
   126  //	timestamp: 指定时间,若未指定,则使用当前时间
   127  func TimeToZero(timestamp ...int) int {
   128  	t := 0
   129  	if len(timestamp) == 1 {
   130  		t = timestamp[0]
   131  	} else {
   132  		t = GetTimestamp()
   133  	}
   134  	return DAY_1 - (t+HOUR_8)%DAY_1
   135  }
   136  
   137  // 获取零点的时间戳(秒)
   138  //	timestamp: 指定时间,若未指定,则使用当前时间
   139  func ZeroTime(timestamp ...int) int {
   140  	t := 0
   141  	if len(timestamp) == 1 {
   142  		t = timestamp[0]
   143  	} else {
   144  		t = GetTimestamp()
   145  	}
   146  	return t - (t+HOUR_8)%DAY_1
   147  }
   148  
   149  // 时间格式化
   150  //	timestamp: 时间戳
   151  //	format: 格式化模板
   152  func Format(timestamp int, format string) string {
   153  	return time.Unix(int64(timestamp), 0).Format(format)
   154  }