添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

ZoneId代表“时区”,而ZoneOffset表示“时区偏移量”

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

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

列举几个时区的输出结果

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