接下来我们要讲的这个类非常重要,在以后的工作中,它起到很大的作用。
由于地球是椭圆形的,太阳照射位置是不同的,为了同一时间,世界同一将格林尼治时间设置为世界时间,也就是我们前面讲到的:Instant类,但是不同的国家日期时间是不同的,就像中国属于亚洲东八区,所以我们的时间要在格林尼治时间上加8小时,这就是所谓的时差。
通过now()方法获取到当前东八区的 时间,输出它,我们能看见,在末尾有一个时区:
[Asia/Shanghai]显示的是[亚洲/上海]
那么我们有什么方法可以指定时间,以及时区呢?
ZonedDateTime类中也包含of()方法,可以指定时区日期时间,与前面不同的是,它还要传入一个
ZoneId类,这个类封装了时区,是java提前写好了的。
直接通过systemDefault()方法获取到当前时区,代码如下:
LocalDateTime localDateTime = LocalDateTime.of(2021, 3, 13, 13, 32,25);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime,ZoneId.systemDefault());
System.out.println(zonedDateTime);
当然,你也可以自己指定时区,ZoneId包含了已知的所有时区,放在一个集合里面;
一共599个时区,通过getAvailableZoneIds方法查看,
如下,东京的时间就比我们快一小时,东久区