如何在Go中解析毫秒以来的时间戳字符串?

自从纪元以来,我有一个毫秒数的字符串(它最初来自java.lang.System.currentTimeMillis()通话)。在Go中将此字符串转换为人类可读的时间戳字符串的正确方法是什么?

看一下时间包,我看到了该Parse函数,但是布局似乎都是基于正常时区的时间。一旦进入Time对象,就可以Format(Time.Stamp)用来获取所需的输出,但是我不清楚如何将字符串转换为Time对象。


慕婉清6462132
浏览 431回答 3
3回答

三国纷争

该接受的答案会为一些日期范围不工作,在未来太远或太遥远的过去,因为只有在有限的时间范围可以使用64位(加上或减去大纪元300年)来描述。这将适用于以毫秒为单位的整个范围:var Epoch = time.Unix(0, 0)func ParseMillisecondUnixTimestamp(s string) (time.Time, error) {    ts, err := strconv.Atoi(s)    if err != nil {        return time.Time{}, err    }    return Epoch.Add(time.Duration(ts) * time.Millisecond), nil}

红糖糍粑

使用time.Unix(ms/1000, 0)就可以了。首先使用众所周知的关系将ms-timestamp转换为unix-timestamp 1 s = 1000 ms,然后将结果用作time.Unix函数的第一个参数
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go