本文主要介绍Java中,带有时区的日期时间(UTC ZonedDateTime)转成指定时区的时间(toLocalDateTime)方法,以及ZonedDateTime使用相关的示例代码。

1、ZonedDateTime的使用

ZonedDateTime类是Java 8中日期时间功能里,用于表示带时区的日期与时间信息的类。

1) 创建一个带有时区时间

//当前时间
ZonedDateTime dateTime = ZonedDateTime.now(); 
//指定值
ZoneId zoneId = ZoneId.of("UTC+1");
ZonedDateTime dateTime2 = ZonedDateTime.of(2015, 11, 30, 23, 45, 59, 1234, zoneId);

2) ZonedDateTime对象的常用方法

getYear()
getMonth()
getDayOfMonth()
getDayOfWeek()
getDayOfYear()
getHour()
getMinute()
getSecond()
getNano()

2、将ZonedDateTime转换成指定时区时间

1) 调用withZoneSameInstant方法,转换为系统默认时区

zonedDateTime = zonedDateTime.withZoneSameInstant(ZoneId.systemDefault());

2) 将UTC时间转成指定时区时间

ZonedDateTime utcZoned = ZonedDateTime.of(LocalDate.now().atTime(11, 30), ZoneOffset.UTC);
ZoneId swissZone = ZoneId.of("Asia/Shanghai");//更多时区标识字符串可参考下面的文档
ZonedDateTime swissZoned = utcZoned.withZoneSameInstant(swissZone);
LocalDateTime swissLocal = swissZoned.toLocalDateTime();

相关文档:Java ZonedDateTime转换成 LocalDateTime方法代码及之间区别


推荐文档