По крайней мере, насколько я вижу в истории этой проблемы для OpenJDK ...
https://bugs.openjdk.java.net/browse/JDK-8195595?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel
... OpenJDK до сих пор избегал иметь дело с отрицательным DSTс использованием «тыловой» версии tzdata, версии, в которой нет отрицательного DST (опция, которая, вероятно, скоро исчезнет).
Я подозреваю, что в Oracle до сих пор избегали иметь дело с отрицательным DST.тоже.
Во всяком случае, я не думаю, что реализация часовых поясов в Java хорошо обрабатывает эти сокращения часовых поясов.Я попробовал этот пример кода:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
format.setTimeZone(TimeZone.getTimeZone(("Europe/Prague")));
for (int date = 1; date <= 28; ++date) {
System.out.println(format.format(new GregorianCalendar(1947, 1, date, 0, 0).getTime()));
}
... и обозначение остается "CET" до и после предполагаемой даты перехода.
...
1947-02-20 05:00:00 CET
1947-02-21 05:00:00 CET
1947-02-22 05:00:00 CET
1947-02-23 06:00:00 CET
1947-02-24 06:00:00 CET
1947-02-25 06:00:00 CET
1947-02-26 06:00:00 CET
...
Если я правильно помню,Реализация часовых поясов в Java вообще не сохраняет историческую запись об этих изменениях аббревиатур, она просто кодирует времена перехода для изменений смещения часового пояса.Отображаемые сокращения отображаются в соответствии с текущими, а не историческими стандартами.
Редактировать: Я прочитал tzdata неправильно и ошибся в том, что это значит!