无法理解为什么以下代码中BST(UTC偏移量:UTC +1)的偏移量是+11,而不是我预期的+1。
final String lastUpdated = "Mon Sep 27 18:29:00 BST 2021";
final DateTimeFormatter LAST_UPDATED_FORMATTER = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z y").withLocale(Locale.UK);
ZonedDateTime zonedDateTime = ZonedDateTime.parse(lastUpdated, LAST_UPDATED_FORMATTER);
LocalDateTime localDateTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime();
System.out.println(zonedDateTime.getOffset()); // +11:00; expected +1
System.out.println(localDateTime.toString());
控制台输出:
+11:00
2021-09-27T07:29
一旦日期转换为 UTC 时间,所有事情就变得清晰明了:
final String lastUpdated = "Mon Sep 27 18:29:00 BST 2021";
System.out.println(zonedDateTime.getZone().toString());
,执行代码并观察输出。提示:在这种情况下,“BST”不会被解释为英国夏令时! - deHaar