我有一个外部API,它返回long
秒的日期,表示为自纪元开始以来的毫秒数.
使用老式的JavaAPI,我只需要用
Date myDate = new Date(startDateLong)
Java8的LocalDate
/LocalDateTime
类中的类似功能是什么?
我有兴趣将我当前当地时区内由long
表示的时间点转换为LocalDate
.
我有一个外部API,它返回long
秒的日期,表示为自纪元开始以来的毫秒数.
使用老式的JavaAPI,我只需要用
Date myDate = new Date(startDateLong)
Java8的LocalDate
/LocalDateTime
类中的类似功能是什么?
我有兴趣将我当前当地时区内由long
表示的时间点转换为LocalDate
.
如果您有自历元起的毫秒数,并且希望使用当前本地时区将其转换为本地日期,则可以使用
LocalDate date =
Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();
但请记住,即使是系统的默认时区也可能会更改,因此相同的long
值可能会在后续运行中产生不同的结果,即使在同一台计算机上也是如此.
此外,请记住,与java.util.Date
不同,LocalDate
真正代表的是一个日期,而不是一个日期和时间.
否则,您可以使用LocalDateTime
:
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());