如何将Unix微秒级UTC时间戳转换为Julia DateTime类型
Unix微秒时间戳转Julia DateTime实现方案
Golang输出的Unix微秒时间戳以1970-01-01 00:00:00 UTC为计数起点,以累计总微秒数作为时间值,示例值为1652681499679534,转换为Julia标准库DateTime类型的无精度损失方案如下:
实现代码
依赖Julia标准库Dates,从Unix纪元起点累加对应微秒时长即可:
using Dates # 替换为实际获取到的微秒时间戳 unix_micro_ts = 1652681499679534 dt = DateTime(1970, 1, 1) + Microsecond(unix_micro_ts)
校验与注意点
- 代入示例值运行后得到的结果为
2022-05-16T06:11:39.679,与Golang侧调用time.UnixMicro(1652681499679534)的输出完全一致。 - 上述代码返回的是UTC时区的
DateTime对象,和时间戳的计数基准匹配,不会引入时区偏移误差。如果需要本地时区时间,可在拿到UTC时间后统一做时区转换,不要在时间戳换算阶段手动加偏移量,避免计算错误。 - 尽量不要使用
unix2datetime(unix_micro_ts / 1_000_000)的写法,当时间戳数值跨度极大时,浮点除法可能产生精度丢失,时间周期累加的写法稳定性更高。
内容的提问来源于stack exchange,提问作者BAR
相关产品推荐
相关产品推荐

