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