3 回答
TA贡献1847条经验 获得超11个赞
ZonedDateTime并且LocalDateTime是不同的。
如果你需要LocalDateTime,你可以这样做:
long m = ...;
Instant instant = Instant.ofEpochMilli(m);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
TA贡献1831条经验 获得超4个赞
您可以ZonedDateTime从瞬间构造一个(这使用系统区域 ID):
//Instant is time-zone unaware, the below will convert to the given zone
ZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(m),
ZoneId.systemDefault());
如果你需要一个LocalDateTime实例:
//And this date-time will be "local" to the above zone
LocalDateTime ldt = zdt.toLocalDateTime();
TA贡献1804条经验 获得超7个赞
无论您想要 a ZonedDateTime、LocalDateTime、OffsetDateTime、 或LocalDate,语法实际上都是相同的,并且都围绕着将毫秒应用于Instant第一个 using Instant.ofEpochMilli(m)。
long m = System.currentTimeMillis();
ZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
OffsetDateTime odt = OffsetDateTime.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
LocalDate ld = LocalDate.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
打印它们会产生这样的结果:
2018-08-21T12:47:11.991-04:00[America/New_York]
2018-08-21T12:47:11.991
2018-08-21T12:47:11.991-04:00
2018-08-21
打印Instant本身会产生:
2018-08-21T16:47:11.991Z
添加回答
举报