java.util.Date转OffsetDateTime:两种UTC时间获取方法是否等价?
两段代码的等价性判断
这两段代码返回的结果完全等价,你可以放心用第二段代码替换第一段。
具体分析:
- 第一段代码里,
new Date()会获取当前系统时间的毫秒时间戳,调用toInstant()后得到的Instant实例,和直接调用Instant.now()拿到的是同一个时间点。随后instant.atOffset(ZoneOffset.UTC)只是将该Instant转换为UTC时区的OffsetDateTime。 - 第二段代码的
OffsetDateTime.now(ZoneOffset.UTC),内部逻辑就是先获取当前的Instant,再结合UTC偏移量生成对应的OffsetDateTime,和第一段的执行逻辑本质完全一致。
另外,第二段代码更简洁,也符合Java 8及以上版本日期时间API的最佳写法,比第一段的冗余转换更值得推荐。
内容的提问来源于stack exchange,提问作者Sergey Tsypanov
相关产品推荐
相关产品推荐

