github.com/chain5j/chain5j-pkg@v1.0.7/util/dateutil/date.go (about) 1 package dateutil 2 3 import ( 4 "time" 5 6 "github.com/chain5j/logger" 7 ) 8 9 /* 10 前面是含义,后面是 go 的表示值,多种表示,逗号","分割 11 年 06,2006 12 月份 1,01,Jan,January 13 日 2,02,_2 14 时 3,03,15,PM,pm,AM,am 15 分 4,04 16 秒 5,05 17 周几 Mon,Monday 18 时区时差表示 -07,-0700,Z0700,Z07:00,-07:00,MST 19 时区字母缩写 MST 20 您看出规律了么!哦是的,你发现了,这里面没有一个是重复的,所有的值表示都唯一对应一个时间部分。 21 并且涵盖了很多格式组合。 22 */ 23 type DateFormat string 24 25 const ( 26 // 时间格式化字符串 27 Default DateFormat = "2006-01-02 15:04:05" 28 YYYY DateFormat = "2006" 29 YYYY_MM DateFormat = "2006-01" 30 YYYY_7MM DateFormat = "2006/01" 31 YYYY_0MM DateFormat = "2006.01" 32 YYYYMM DateFormat = "200601" 33 YYYY_MM_dd DateFormat = "2006-01-02" 34 YYYY_7MM_7dd DateFormat = "2006/01/02" 35 YYYY_0MM_0dd DateFormat = "2006.01.02" 36 YYYYMMdd DateFormat = "20060102" 37 YYYY_MM_dd8HH0mm DateFormat = "2006-01-02 15:04" 38 YYYY_7MM_7dd8HH0mm DateFormat = "2006/01/02 15:04" 39 YYYY_0MM_0dd8HH0mm DateFormat = "2006.01.02 15:04" 40 YYYYMMddHHmm DateFormat = "200601021504" 41 YYYY_MM_dd8HH0mm0ss DateFormat = "2006-01-02 15:04:05" 42 YYYY_7MM_7dd8HH0mm0ss DateFormat = "2006/01/02 15:04:05" 43 YYYY_0MM_0dd8HH0mm0ss DateFormat = "2006.01.02 15:04:05" 44 YYYYMMddHHmmss DateFormat = "20060102150405" 45 HH0mm0ss DateFormat = "15:04:05" 46 ) 47 48 func (d DateFormat) String() string { 49 return string(d) 50 } 51 52 // 中国时区 53 var SysTimeLocation, _ = time.LoadLocation("Asia/Chongqing") 54 55 // CurrentTime 返回毫秒 56 func CurrentTime() int64 { 57 return time.Now().UnixNano() / 1e6 58 } 59 60 // CurrentTimeSecond 返回秒 61 func CurrentTimeSecond() int64 { 62 return time.Now().Unix() 63 } 64 65 // CurrentTimeDay 返回day的时间戳 66 func CurrentTimeDay() int64 { 67 return time.Now().UnixNano() / Day.Nanoseconds() 68 } 69 70 // NanoToMillisecond 纳秒转毫秒 71 func NanoToMillisecond(t int64) int64 { 72 return t / 1e6 73 } 74 75 // NanoToSecond 纳秒转秒 76 func NanoToSecond(t int64) int64 { 77 return t / 1e9 78 } 79 80 // 秒转time 81 func SecondToTime(t int64) time.Time { 82 return time.Unix(t, 0) 83 } 84 85 func MillisecondToTime(t int64) time.Time { 86 return time.Unix(0, t*1e6) 87 } 88 func NanoToTime(t int64) time.Time { 89 return time.Unix(0, t) 90 } 91 92 // 格式化输出 93 func Format(t time.Time, format DateFormat) string { 94 return t.Format(format.String()) 95 } 96 97 // 秒转成format 98 func SecondFormat(t int64, format DateFormat) string { 99 return Format(SecondToTime(t), format) 100 } 101 102 // 时间转本地化 103 // s时间格式:如"2017-05-11 14:06:06" 104 // format:格式 105 // location:时区(Location) 106 func ParseInLocation(s string, format DateFormat, location *time.Location) { 107 // func ParseInLocation(layout, value string, loc *Location) (Time, error) (layout已带时区时可直接用Parse) 108 time.ParseInLocation(format.String(), s, location) 109 } 110 111 func LoadLocation(loc string) *time.Location { 112 // 默认UTC 113 // loc, err := time.LoadLocation("") 114 // // 服务器设定的时区,一般为CST 115 // loc, err := time.LoadLocation("Local") 116 // // 美国洛杉矶PDT 117 // loc, err := time.LoadLocation("America/Los_Angeles") 118 // 119 // // 获取指定时区的时间点 120 // local, _ := time.LoadLocation("America/Los_Angeles") 121 // fmt.Println(time.Date(2018,1,1,12,0,0,0, local)) 122 location, e := time.LoadLocation(loc) 123 if e != nil { 124 logger.Error("loadLocation err", "err", e) 125 location, _ = time.LoadLocation("") 126 return location 127 } 128 return location 129 }