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()) }