Java 8将给定的时间和时区转换为UTC时间

我有时间用字符串类型:“2015-01-05 17:00”,ZoneId是“澳大利亚/悉尼”.

如何使用Java 8 datetime API将此时间信息转换为对应的UTC时间?

还需要考虑DST的东西.

解决方法:

您正在寻找Java8中的ZonedDateTime类 – 一个完整的日期时间,具有时区和已解析的UTC / Greenwich偏移量.在设计方面,该类应主要视为LocalDateTime和ZoneId的组合. ZoneOffset是一个重要但次要的信息,用于确保班级代表瞬间,特别是在夏令时重叠期间.

例如:

ZoneId australia = ZoneId.of("Australia/Sydney");
String str = "2015-01-05 17:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime localtDateAndTime = LocalDateTime.parse(str, formatter);
ZonedDateTime dateAndTimeInSydney = ZonedDateTime.of(localtDateAndTime, australia );

System.out.println("Current date and time in a particular timezone : " + dateAndTimeInSydney);

ZonedDateTime utcDate = dateAndTimeInSydney.withZoneSameInstant(ZoneOffset.UTC);

System.out.println("Current date and time in UTC : " + utcDate);
上一篇:【踩坑】环境问题


下一篇:PHP的DST处理时区