时区的处理
- 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]
*/
}