为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2021-08-04 16:43:34
我有以毫秒为单位的时间,我需要将其转换为 ZonedDateTime 对象。我有以下代码long m = System.currentTimeMillis(); LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);线LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);给我一个错误,说本地日期时间类型未定义methed millsToLocalDateTime
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

ZonedDateTime并且LocalDateTime是不同的。


如果你需要LocalDateTime,你可以这样做:


long m = ...;

Instant instant = Instant.ofEpochMilli(m);

LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());


查看完整回答
反对 回复 2021-08-04
?
慕容708150

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();


查看完整回答
反对 回复 2021-08-04
?
三国纷争

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


查看完整回答
反对 回复 2021-08-04
  • 3 回答
  • 0 关注
  • 586 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信