首页 > 编程语言 > 详细

Java8 LocalDateTime 与 ZonedDateTime 简单示例

时间:2020-12-06 00:23:27      阅读:27      评论:0      收藏:0      [点我收藏+]
ZoneId代表“时区”,而ZoneOffset表示“时区偏移量”

可以通过以下的代码打印出所有支持的时区

ZoneId.getAvailableZoneIds().forEach(s-> System.out.println(s));
或
ZoneOffset.getAvailableZoneIds().forEach(s -> System.out.println(s));

列举几个时区的输出结果

GMT
UTC
UCT
Asia/Shanghai
Asia/Chongqing
Asia/Hong_Kong
Hongkong
Japan
...

示例代码

System.out.println( "本机默认时区:" + ZoneId.systemDefault()) ;

//系统默认时区的当前时间
LocalDateTime localDateTime = LocalDateTime.now() ;
System.out.println("本地当前时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSS") .format(localDateTime));

//根据本地时间计算指定时区的当地时间
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Chongqing")) ;
System.out.println(zonedDateTime.getOffset() + "--> " +DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSS") .format(zonedDateTime));

//给时间添加上指定的时区
ZonedDateTime zonedDate = ZonedDateTime.of(localDateTime, ZoneId.of("Asia/Shanghai"));
System.out.println(zonedDate.getOffset() + "--> " + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSS") .format(zonedDate));

ZonedDateTime hkZonedDate = ZonedDateTime.of(localDateTime, ZoneId.of("Asia/Hong_Kong"));
System.out.println(hkZonedDate.getOffset() + "--> " + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSS") .format(hkZonedDate));

ZonedDateTime gmtZonedDate = ZonedDateTime.of(localDateTime, ZoneId.of("GMT"));
System.out.println(gmtZonedDate.getOffset() + "--> " + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSS") .format(gmtZonedDate));

//将ZonedDateTime转换为LocalDateTime
LocalDateTime gmt2LocalDateTime = LocalDateTime.from(gmtZonedDate) ;
System.out.println("本地当前时间:" + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSSS") .format(gmt2LocalDateTime));

//计算两个带有时区时间的相差时间(时差)
long hour = ChronoUnit.HOURS.between(zonedDate,gmtZonedDate) ;
System.out.println("间隔小时:" + hour);

//指定偏移量后的时间
Instant instant = localDateTime.toInstant(ZoneOffset.of("+12")) ;
System.out.println("指定偏移量后的时间:" + DateTimeFormatter.ISO_INSTANT.format(instant));

其输出的结果:

本机默认时区:Asia/Shanghai
本地当前时间:2020-12-05 13:04:17:1370
+08:00--> 2020-12-05 13:04:17:1370
+08:00--> 2020-12-05 13:04:17:1370
+08:00--> 2020-12-05 13:04:17:1370
Z--> 2020-12-05 13:04:17:1370
本地当前时间:2020-12-05 13:04:17:1370
间隔小时:8
指定偏移量后的时间:2020-12-05T01:04:17.137Z

Java8 LocalDateTime 与 ZonedDateTime 简单示例

原文:https://blog.51cto.com/dengshuangfu/2560058

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!