时区 BST 有错误的偏移量

Timezone BST has wrong offset

无法理解为什么 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";

恐怕这就是使用含糊不清的缩写的后果。 BST 可以表示不同的意思,如图 here.

在这种情况下,它似乎被解释为布干维尔标准时间,这确实是 UTC+11。

(即使在英国,BST 并不总是指英国夏令时。在 1968 年至 1971 年间,BST 表示“英国标准时间”,尽管它仍然是 GMT+1。)

对于格式化,使用缩写“还算可以”,但对于解析目的,应尽可能避免使用。如果您收到的数据您知道 会使用它,并且您知道它应该意味着什么,那么您最好在解析之前在文本中替换它。