Files
EdgeNode/internal/utils/time.go

84 lines
1.9 KiB
Go
Raw Normal View History

2020-09-27 15:26:06 +08:00
package utils
import (
teaconst "github.com/TeaOSLab/EdgeNode/internal/const"
"github.com/TeaOSLab/EdgeNode/internal/goman"
2022-08-07 11:12:29 +08:00
"github.com/iwind/TeaGo/types"
2023-04-07 11:23:37 +08:00
timeutil "github.com/iwind/TeaGo/utils/time"
2020-09-27 15:26:06 +08:00
"time"
)
var unixTime = time.Now().Unix()
2021-12-02 11:30:47 +08:00
var unixTimeMilli = time.Now().UnixMilli()
2022-08-07 11:12:29 +08:00
var unixTimeMilliString = types.String(unixTimeMilli)
2023-04-07 11:23:37 +08:00
var ymd = timeutil.Format("Ymd")
var round5Hi = timeutil.FormatTime("Hi", time.Now().Unix()/300*300)
2020-09-27 15:26:06 +08:00
func init() {
if !teaconst.IsMain {
return
}
2022-07-26 09:41:43 +08:00
var ticker = time.NewTicker(200 * time.Millisecond)
goman.New(func() {
2020-09-27 15:26:06 +08:00
for range ticker.C {
unixTime = time.Now().Unix()
2021-12-02 11:30:47 +08:00
unixTimeMilli = time.Now().UnixMilli()
2022-08-07 11:12:29 +08:00
unixTimeMilliString = types.String(unixTimeMilli)
2023-04-07 11:23:37 +08:00
ymd = timeutil.Format("Ymd")
round5Hi = timeutil.FormatTime("Hi", time.Now().Unix()/300*300)
2020-09-27 15:26:06 +08:00
}
})
2020-09-27 15:26:06 +08:00
}
2021-12-02 11:30:47 +08:00
// UnixTime 最快获取时间戳的方式,通常用在不需要特别精确时间戳的场景
2020-09-27 15:26:06 +08:00
func UnixTime() int64 {
2021-12-02 11:30:47 +08:00
return unixTime
}
2022-01-11 09:25:34 +08:00
// FloorUnixTime 取整
func FloorUnixTime(seconds int) int64 {
return UnixTime() / int64(seconds) * int64(seconds)
}
// CeilUnixTime 取整并加1
func CeilUnixTime(seconds int) int64 {
return UnixTime()/int64(seconds)*int64(seconds) + int64(seconds)
}
// NextMinuteUnixTime 获取下一分钟开始的时间戳
func NextMinuteUnixTime() int64 {
return CeilUnixTime(60)
}
2021-12-02 11:30:47 +08:00
// UnixTimeMilli 获取时间戳,精确到毫秒
func UnixTimeMilli() int64 {
return unixTimeMilli
2020-09-27 15:26:06 +08:00
}
2022-08-07 11:12:29 +08:00
func UnixTimeMilliString() (int64, string) {
return unixTimeMilli, unixTimeMilliString
}
// 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)
}
2023-04-07 11:23:37 +08:00
// Ymd 读取YYYYMMDD
func Ymd() string {
return ymd
}
// Round5Hi 读取5分钟间隔时间
func Round5Hi() string {
return round5Hi
}