Java LocalDateTime和ZonedDateTime如何相互转换

后端 潘老师 6个月前 (10-31) 206 ℃ (0) 扫码查看

在本文中我们通过易于理解的Java示例来学会如何实现LocalDateTime和ZonedDateTime之间的相互转换。

LocalDateTime的实例表示没有时区的日期时间(精确到纳秒)。它代表ISO-8601日历系统中的本地时间线上的一个点。在没有额外信息(如偏移量或时区)的情况下,它无法表示整个时间线上的瞬间。

ZonedDateTime的实例表示整个时间线上的一个瞬间。它是日期,时间和区域信息的组合。

ZonedDateTime = LocalDateTime + ZoneId

1.LocalDateTime如何转为ZonedDateTime

要将LocalDateTime转换为ZonedDateTime,我们必须将区域偏移量添加到本地日期时间。无论我们添加的时区信息是什么,所构建的对象将代表具有配置偏移量的宇宙时间线上的一个瞬间。

LocalDateTime ldt = LocalDateTime.now(); //本地时间
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );  //时区信息
ZonedDateTime zdtAtAsia = ldt.atZone( zoneId );    //亚洲时间本地时间
ZonedDateTime zdtAtET = zdtAtAsia
    .withZoneSameInstant( ZoneId.of( "America/New_York" ) ); //与欧洲东部时间同步

程序输出:

2018-07-15T11:27:46.203763100+05:30[Asia/Kolkata]
2018-07-15T01:57:46.203763100-04:00[America/New_York]

2.ZonedDateTime 如何转为 LocalDateTime

使用ZonedDateTime.toLocalDateTime()方法获取没有时区信息的本地日期时间。

ZonedDateTime zdtAtET = ZonedDateTime.now(ZoneId.of("America/New_York"));
LocalDateTime ldt = zdtAtET.toLocalDateTime();
System.out.println(zdtAtET);
System.out.println(ldt);

程序输出:

2018-07-15T01:59:52.054839900-04:00[America/New_York]
2018-07-15T01:59:52.054839900

以上就是Java LocalDateTime和ZonedDateTime如何相互转换的全部内容。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10526.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】