uniugm/admin/lib/utils/time.go

45 lines
1.1 KiB
Go
Raw Normal View History

2025-04-28 15:56:04 +08:00
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)
}