Сегодня (19 марта) Сидней все еще использует летнее время (DST).Лето в южном полушарии совпадает с зимой в северном.Так что это заканчивается в это время.Таким образом, хотя стандартное время в Сиднее составляет +10: 00, сейчас оно составляет +11: 00.Лондон в настоящее время на стандартном времени, +00: 00.Таким образом, разница, как вы заметили, составляет 11 часов.
Летнее время начинается в Лондоне (и ЕС) 31 марта, в результате чего Лондон со смещением +01: 00, в свою очередь, сокращает разницу до 10 часов.
Летнее время заканчивается в Сиднее 7 апреля. Они возвращаются к своему стандартному смещению +10: 00, еще больше уменьшая разницу между Лондоном и Сиднеем до 9 часов, разницу, которую вы наблюдали для19 апреля.
Или в коде:
ZoneId london = ZoneId.of("Europe/London");
ZoneId sydney = ZoneId.of("Australia/Sydney");
Instant instMarch = Instant.parse("2019-03-19T00:00:00Z");
Instant instApril = Instant.parse("2019-04-19T00:00:00Z");
System.out.println(instMarch.atZone(london));
System.out.println(instMarch.atZone(sydney));
System.out.println(instApril.atZone(london));
System.out.println(instApril.atZone(sydney));
Вывод:
2019-03-19T00:00Z[Europe/London]
2019-03-19T11:00+11:00[Australia/Sydney]
2019-04-19T01:00+01:00[Europe/London]
2019-04-19T10:00+10:00[Australia/Sydney]
Обратите внимание, что текущие смещения печатаются (Z
в первой строке вывода означает смещение нуля).
Сингапур, в свою очередь, не использует летнее время (по крайней мере, не в 2019 году), поэтому здесь разница уменьшается только с 8 до 7 часов, когда летнее времяначинается в Лондоне.