猿问

如何将时间以毫秒为单位转换为 ZonedDateTime

我有以毫秒为单位的时间,我需要将其转换为 ZonedDateTime 对象。

我有以下代码

long m = System.currentTimeMillis();
LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);

线

LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);

给我一个错误,说本地日期时间类型未定义methed millsToLocalDateTime


浮云间
浏览 587回答 3
3回答

回首忆惘然

ZonedDateTime并且LocalDateTime是不同的。如果你需要LocalDateTime,你可以这样做:long m = ...;Instant instant = Instant.ofEpochMilli(m);LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

慕容708150

您可以ZonedDateTime从瞬间构造一个(这使用系统区域 ID)://Instant is time-zone unaware, the below will convert to the given zoneZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(m),                                 ZoneId.systemDefault());如果你需要一个LocalDateTime实例://And this date-time will be "local" to the above zoneLocalDateTime ldt = zdt.toLocalDateTime();

三国纷争

无论您想要 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.9912018-08-21T12:47:11.991-04:002018-08-21打印Instant本身会产生:2018-08-21T16:47:11.991Z
随时随地看视频慕课网APP

相关分类

Java
我要回答