时间解析库
时间戳
1
2
3
4
5
6
now := time.Now() // 当前本地时间
sec := now.Unix() // 秒级(Unix 时间戳)
msec := now.UnixMilli() // 毫秒级(Go 1.17+)
usec := now.UnixMicro() // 微秒级(Go 1.17+)
nsec := now.UnixNano() // 纳秒级
封装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package adapter
import (
"strconv"
"time"
)
const TimeLayout = "2006-01-02 15:04:05"
var loc *time.Location
func Init() error {
cnLoc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
return err
}
loc = cnLoc
return nil
}
func LocalTimeNow() time.Time {
return time.Now().In(loc)
}
// "2024-09-01 00:00:00" 转成日期类型
func StringToTime(stringTime string) (time.Time, error) {
time, err := time.ParseInLocation(TimeLayout, stringTime, loc)
if err != nil {
return LocalTimeNow(), err
}
return time, nil
}
// 1725120000 转成日期类型
func TimestampToTime(timestamp string) (time.Time, error) {
i, err := strconv.ParseInt(timestamp, 10, 64)
if err != nil {
return LocalTimeNow(), err
}
tm := time.Unix(i, 0)
return tm, nil
}
// 2024-09-01 00:00:00 转成 1725120000
func StringTimeToTimestamp(stringTime string) (int64, error) {
timeInt64, err := time.ParseInLocation(TimeLayout, stringTime, loc)
if err != nil {
return 0, err
}
timeUnix := timeInt64.Unix()
return timeUnix, nil
}
// 1725120000 转成 2024-09-01 00:00:00
func TimestampToStringTime(timestamp int64) string {
return time.Unix(timestamp, 0).In(loc).Format(TimeLayout)
}