如何从纪元以来的毫秒时间戳获取Java TemporalAccessor?
问题解答
首先明确:使用Instant.ofEpochMilli(timestamp)完全正确,直接满足你的需求,原因如下:
Instant是Java 8+日期时间API中专门表示UTC时间线上瞬时点的类,它的核心就是基于纪元(UTC 1970-01-01 00:00:00)以来的毫秒数构建的,完全匹配你提供的时间戳定义。Instant直接实现了TemporalAccessor接口,所以可以直接作为参数传入接收该类型的第三方API,不需要额外的转换步骤。
如果第三方API有特殊要求(比如需要带时区信息的时间对象),你可以基于Instant进一步转换,比如:
// 转换为UTC时区的ZonedDateTime,同样实现了TemporalAccessor ZonedDateTime zdt = instant.atZone(ZoneOffset.UTC);
但回到你的原始需求,仅需将UTC纪元毫秒数转为TemporalAccessor的话,Instant.ofEpochMilli(timestamp)是最精准、最直接的方案。
内容的提问来源于stack exchange,提问作者Vihung
相关产品推荐
相关产品推荐

