package utils import ( "fmt" "time" ) func ParseUnixTimestamp2LocalTime(ts int64) (local time.Time) { sec := int64(0) nsec := int64(0) switch { case ts >= 1e18: // 纳秒 sec = ts / int64(1e9) nsec = ts % int64(1e9) case ts >= 1e15: // 微妙 sec = ts / int64(1e6) nsec = ts % int64(1e6) case ts >= 1e12: // 毫秒 sec = ts / int64(1e3) nsec = ts % int64(1e3) case ts >= 1e9: // 秒 sec = ts nsec = 0 default: panic(fmt.Errorf("ts:%v invalid parse to local time")) } t := time.Unix(sec, nsec) ts2str := t.Format("2006-01-02 15:04:05.000000000") local, _ = time.ParseInLocation("2006-01-02 15:04:05.000000000", ts2str, time.Local) return local } // GetTimeZoneLocalTime 获取指定时区的当地时间 func GetTimeZoneLocalTime(timeZone int) time.Time { offsetZone := time.FixedZone(time.Local.String(), timeZone*60*60) return time.Now().In(offsetZone) } // GetTimeZoneLocalTimeByTimestamp 获取指定时间戳与时区的当地时间 func GetTimeZoneLocalTimeByTimestamp(ts int64, timeZone int) time.Time { offsetZone := time.FixedZone(time.Local.String(), timeZone*60*60) return time.Unix(ts, 0).Local().In(offsetZone) }