// Package datetime centralizes the application's Beijing time policy. package datetime import "time" const Zone = "Asia/Shanghai" var Location = func() *time.Location { location, err := time.LoadLocation(Zone) if err != nil { return time.FixedZone("CST", 8*60*60) } return location }() func Now() time.Time { return time.Now().In(Location) } // Normalize converts any source instant (including COS metadata) to Beijing time. func Normalize(value time.Time) time.Time { if value.IsZero() { return value } return value.In(Location) } func Parse(value string) (time.Time, error) { parsed, err := time.Parse(time.RFC3339Nano, value) if err != nil { return time.Time{}, err } return Normalize(parsed), nil } func Format(value time.Time) string { return Normalize(value).Format(time.RFC3339Nano) }