【发布时间】:2018-05-31 20:42:00
【问题描述】:
在 Java-8 之前,我习惯于始终将任何与 Epoch 相关的日期/时间保持为毫秒,并且只在退出时处理人类可读的日期/时间,即在 UI 或日志文件中,或者在解析用户时生成的输入。
我认为这对于 Java-8 来说仍然是安全的,现在我正在寻找最简洁的方法来从毫秒时间戳中获取格式化日期。我试过了
df = Dateformatter.ofPattern("...pattern...");
df.format(Instant.ofEpochMilli(timestamp))
但它在Instant.getLong(...) 中被Unsupported field: YearOfEra 炸毁,我理解了一半。现在用什么来代替Instant?
LocalDateTime.ofEpoch(Instant, ZoneId) 似乎是错误的,因为我不想知道当地时间。我只想在应用格式化程序时查看本地时区。在内部它应该只是Instant。
ZonedDateTime.ofInstant(Instant, ZoneId) 也是如此,我想仅在格式化时应用 ZoneId。但我注意到DateTimeFormatter 本身似乎不再处理时区,所以我认为我需要使用上述之一。
哪个是首选,为什么?或者我应该使用另一种方式将 epoch-millis 时间戳格式化为带时区的日期/时间?
【问题讨论】:
标签: java datetime java-8 java-time