Files
EdgeNode/internal/utils/time.go
2021-12-08 17:41:39 +08:00

42 lines
893 B
Go

package utils
import (
"github.com/TeaOSLab/EdgeNode/internal/goman"
"time"
)
var unixTime = time.Now().Unix()
var unixTimeMilli = time.Now().UnixMilli()
func init() {
ticker := time.NewTicker(200 * time.Millisecond)
goman.New(func() {
for range ticker.C {
unixTime = time.Now().Unix()
unixTimeMilli = time.Now().UnixMilli()
}
})
}
// UnixTime 最快获取时间戳的方式,通常用在不需要特别精确时间戳的场景
func UnixTime() int64 {
return unixTime
}
// UnixTimeMilli 获取时间戳,精确到毫秒
func UnixTimeMilli() int64 {
return unixTimeMilli
}
// GMTUnixTime 计算GMT时间戳
func GMTUnixTime(timestamp int64) int64 {
_, offset := time.Now().Zone()
return timestamp - int64(offset)
}
// GMTTime 计算GMT时间
func GMTTime(t time.Time) time.Time {
_, offset := time.Now().Zone()
return t.Add(-time.Duration(offset) * time.Second)
}