我有时间用字符串类型:“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);