java 8 localdatetime_Java8 LocalDateTime 与 ZonedDateTime 简单示例

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值