时区的处理
- Java8 中加入了对时区的支持,带时区的时间为分别为:ZonedDate、ZonedTime、ZonedDateTime。其中每个时区都对应着 ID,地区ID都为 “{区域}/{城市}”的格式。
- 例如 :Asia/Shanghai 等
- ZoneId:该类中包含了所有的时区信息
- getAvailableZoneIds() : 可以获取所有时区时区信息
- of(id) : 用指定的时区信息获取 ZoneId 对象
测试代码
public class ZoneTest { // 1.查看所有的可用时区 @Test public void test1() { // 调用ZoneId类的getAvailableZoneIds Set<String> set = ZoneId.getAvailableZoneIds(); set.forEach(System.out::println); } /* * 结果: * …… * Pacific/Guadalcanal * Europe/Athens * US/Pacific * Europe/Monaco */ // 2.通过时区构建LocalDateTime @Test public void test2() { LocalDateTime ldt1 = LocalDateTime.now(ZoneId.of("UTC")); System.out.println(DateTimeUtil.getLocalTimeString(ldt1,null)); ZonedDateTime atZone = ldt1.atZone(ZoneId.of("UTC")); System.out.println(atZone); // 输出 //2020-03-21 09:41:59 //2020-03-21T09:41:59.476Z[UTC] } /* * 结果: * 2018-01-21T23:15:27.902 */ // 3.以时区格式显示时间 @Test public void test3() { LocalDateTime ldt1 = LocalDateTime.now(ZoneId.of("Asia/Shanghai")); ZonedDateTime atZone = ldt1.atZone(ZoneId.of("Asia/Shanghai")); System.out.println(atZone); } /* * 结果: * 2018-01-22T12:15:20.131+08:00[Asia/Shanghai] */}