29 lines
580 B
Go
29 lines
580 B
Go
package timeutil
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
shanghaiOnce sync.Once
|
|
shanghaiLoc *time.Location
|
|
)
|
|
|
|
// ShanghaiLocation 返回业务统一使用的北京时间时区。
|
|
func ShanghaiLocation() *time.Location {
|
|
shanghaiOnce.Do(func() {
|
|
loc, err := time.LoadLocation("Asia/Shanghai")
|
|
if err != nil {
|
|
loc = time.FixedZone("Asia/Shanghai", 8*60*60)
|
|
}
|
|
shanghaiLoc = loc
|
|
})
|
|
return shanghaiLoc
|
|
}
|
|
|
|
// ShanghaiNow 返回当前北京时间,避免容器默认 UTC 影响无时区字符串。
|
|
func ShanghaiNow() time.Time {
|
|
return time.Now().In(ShanghaiLocation())
|
|
}
|