Я использую новую реализацию Java, которая задает вопрос о выходе UTC в CET результат преобразования времени.java.time: Является ли часовой пояс CET летним временем?
ZonedDateTime utcTime = ZonedDateTime.of(2014, 7, 1, 8, 0, 0, 0, ZoneId.of("UTC"));
ZonedDateTime cetTime = ZonedDateTime.ofInstant(utcTime.toInstant(), ZoneId.of("CET"));
System.out.println("Summer-UTC-Time: " + utcTime);
System.out.println("Summer-CET-Time: " + cetTime);
System.out.println();
utcTime = ZonedDateTime.of(2014, 1, 1, 8, 0, 0, 0, ZoneId.of("UTC"));
cetTime = ZonedDateTime.ofInstant(utcTime.toInstant(), ZoneId.of("CET"));
System.out.println("Winter-UTC-Time: " + utcTime);
System.out.println("Winter-CET-Time: " + cetTime);
Я ожидал, что время CET всегда будет +1 времени UTC, но вместо этого я получил:
Summer-UTC-Time: 2014-07-01T08:00Z[UTC]
Summer-CET-Time: 2014-07-01T10:00+02:00[CET] -> +2 **Unexpected**
Winter-UTC-Time: 2014-01-01T08:00Z[UTC]
Winter-CET-Time: 2014-01-01T09:00+01:00[CET] -> +1 Expected
Таким образом, очевидно мне приходится иметь дело с переходом на летнее время, которое я не ожидал, что когда используя CET. Действительно ли java.time
CET в действительности CEST? И если да, в какой зоне я должен использовать, если мне нужна CET?
'CET' не идентичен« UTC + 1 », по крайней мере, как это определяет база данных часовых поясов IANA. И именно это использует Java, POSIX и несколько поставщиков баз данных. – Holger
@Holger Ваш комментарий «CET не идентичен UTC + 1», кажется, самый правильный ответ, хотя ссылка [wiki] (http://en.wikipedia.org/wiki/Central_European_Time) содержит фиксированное UTC-смещение +1 (+2 будет CEST в регионах с DST). Я быстро посмотрел на IANA, но это не помогло мне понять их определение. Тем не менее, если вы добавите свой комментарий в качестве ответа (возможно, предоставив дополнительную справочную информацию), я бы принял его. – FrVaBe