自从纪元以来,我有一个毫秒数的字符串(它最初来自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
}
红糖糍粑
TA贡献1815条经验 获得超6个赞
使用time.Unix(ms/1000, 0)
就可以了。
首先使用众所周知的关系将ms-timestamp转换为unix-timestamp 1 s = 1000 ms
,然后将结果用作time.Unix
函数的第一个参数
- 3 回答
- 0 关注
- 430 浏览
添加回答
举报
0/150
提交
取消