为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕婉清6462132 2021-05-13 21:22:56
自从纪元以来,我有一个毫秒数的字符串(它最初来自java.lang.System.currentTimeMillis()通话)。在Go中将此字符串转换为人类可读的时间戳字符串的正确方法是什么?看一下时间包,我看到了该Parse函数,但是布局似乎都是基于正常时区的时间。一旦进入Time对象,就可以Format(Time.Stamp)用来获取所需的输出,但是我不清楚如何将字符串转换为Time对象。
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

该接受的答案会为一些日期范围不工作,在未来太远或太遥远的过去,因为只有在有限的时间范围可以使用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

}


查看完整回答
反对 回复 2021-05-24
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

使用time.Unix(ms/1000, 0)就可以了。

首先使用众所周知的关系将ms-timestamp转换为unix-timestamp 1 s = 1000 ms,然后将结果用作time.Unix函数的第一个参数


查看完整回答
反对 回复 2021-05-24
  • 3 回答
  • 0 关注
  • 430 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信