如何从很长的纪元时间(以毫秒为单位)创建 Java 8 LocalDate?
我有一个外部API,它将日期返回为s,表示为自Epoch开始以来的毫秒。long
使用旧式Java API,我会简单地从它构建一个Date
Date myDate = new Date(startDateLong)
Java 8 的 / 类中的等效项是什么?LocalDate
LocalDateTime
我有兴趣将 所代表的时间点转换为我当前本地时区的 a。long
LocalDate
我有一个外部API,它将日期返回为s,表示为自Epoch开始以来的毫秒。long
使用旧式Java API,我会简单地从它构建一个Date
Date myDate = new Date(startDateLong)
Java 8 的 / 类中的等效项是什么?LocalDate
LocalDateTime
我有兴趣将 所代表的时间点转换为我当前本地时区的 a。long
LocalDate
如果您有自纪元以来的毫秒,并且想要使用当前本地时区将它们转换为本地日期,则可以使用
LocalDate date =
Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();
但请记住,即使系统的默认时区也可能更改,因此即使在同一台计算机上,相同的值也可能在后续运行中产生不同的结果。long
此外,请记住,与 不同,它实际上表示一个日期,而不是日期和时间。LocalDate
java.util.Date
否则,您可以使用 :LocalDateTime
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
你可以从 Instant.ofEpochMilli(long) 开始:
LocalDate date =
Instant.ofEpochMilli(startDateLong)
.atZone(ZoneId.systemDefault())
.toLocalDate();