From 2929991a8d3b201a322d0427044cc285a8c54362 Mon Sep 17 00:00:00 2001 From: zhanghan2021 Date: Wed, 30 Oct 2024 11:06:53 +0800 Subject: [PATCH] Conversion between Shanghai Time Zone and UTC Time --- server/utils/timeStamp.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 server/utils/timeStamp.go diff --git a/server/utils/timeStamp.go b/server/utils/timeStamp.go new file mode 100644 index 0000000..56d0816 --- /dev/null +++ b/server/utils/timeStamp.go @@ -0,0 +1,38 @@ +package utils + +import ( + "strconv" + "time" +) + +func UnixTimeToShanghai(unix string) (time.Time, error) { + unixInt, err := strconv.ParseInt(unix, 10, 64) + if err != nil { + return time.Time{}, err + } + + unixSecs := unixInt / 1000 + unixNsecs := (unixInt % 1000) * int64(time.Millisecond) + + loc, err := time.LoadLocation("Asia/Shanghai") + if err != nil { + return time.Time{}, err + } + + utcTime := time.Unix(unixSecs, unixNsecs) + cstTime := utcTime.In(loc) + return cstTime, nil +} + +func ShanghaiTimeToUnixMillis(dateStr string) int64 { + t, _ := time.Parse("2006-01-02", dateStr) + + utcTime := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()).UTC() + + unixSecs := utcTime.Unix() + unixNsecs := int64(utcTime.Nanosecond()) + + unixMillis := unixSecs*1000 + unixNsecs/int64(time.Millisecond) + + return unixMillis +} -- Gitee