2016-05-26 2 views
9

От documentation:Почему экземпляры `java.time.ZoneOffset` сортируются« назад »?

Смещения сравниваются в порядке, что они происходят в то же время суток по всему миру. Таким образом, смещение +10: 00 происходит до смещения +09: 00 и так далее до -18: 00.

Кто-нибудь знает причину, по которой они заказаны таким образом? Это кажется противоречивым, поскольку оно противоположно порядку численного значения смещения. Это также противоположно порядку, который они появлялись, просматривая слева направо, на карте с координатами GMT/UTC + 0.

(Кроме того: я не понимаю, почему цитированная документация относится к «до -18: 00». -12: 00 или -24: 00 Я бы понял. Почему -18: 00? Если вы распечатайте смещения всех поддерживаемых часовых поясов java.time.ZoneId, они варьируются от -11: 00 до +12: 00.)

ОБНОВЛЕНИЕ: Ответ на мой вопрос. Из других источников в той же документации:

В 2008 году временные смещения по всему миру простираются от -12: 00 до +14: 00. Чтобы предотвратить любые проблемы с расширением этого диапазона, но все же обеспечить проверку, диапазон смещений ограничивается -18: 00 до 18:00 включительно.

ответ

6

Представьте, что вы получили список локализованных даты/времени, с соответствующей временной зоны, о том, когда какое-то событие произошло:

(1) 2016/05/26 00:00:00 in Australian Eastern Standard Time (UTC+10) 
(2) 2016/05/26 00:00:00 in Greenwich Mean Time (UTC+0) 
(3) 2016/05/26 00:00:00 in Japan Standard Time (UTC+9) 

Вы можете преобразовать их в моменты времени в одном часовом поясе, скажем, GMT:

(1) 2016/05/25 14:00:00 GMT 
(2) 2016/05/26 00:00:00 GMT 
(3) 2016/05/25 15:00:00 GMT 

и теперь сортировать их в порядке "который произошел первый":

(1) 2016/05/25 14:00:00 GMT 
(3) 2016/05/25 15:00:00 GMT 
(2) 2016/05/26 00:00:00 GMT 

Таким образом, австралийское время (1) до японского времени (3), которое находится до британского времени (2).

Это просто применяя тот же порядок часовых поясов: как цитата говорит:

Смещения сравниваются в порядке, что они происходят в то же время суток по всему миру

Так австралийское восточное стандартное время считается «до» японского стандартного времени, которое считается «до» по Гринвичу.

+0

Конечно, еще один способ понять, почему это «обратное» - это то, что] дневной свет также «обращается» по карте мира] (http://www.yellowpagesoftheworld.com/world/world-map.htm)! –

+0

Очень хорошо написано Ответ. Я добавлю еще один способ подумать об этом: новый день наступает раньше на восток (вращение Земли). Например, фондовые рынки Токио открываются перед лондонскими рынками, рынки Лондона открываются перед рынками в Нью-Йорке, которые открываются перед рынками Чикаго. В стандарте ISO 8601, используемом java.time, мы используем знак «плюс» для представления зон, которые опережают UTC (кстати, другие таймеры использовали минус). Что касается слева направо, то это только для языков l-to-r и карт North-on-top. Поместите Юг сверху или изучите арабский язык, чтобы карта читалась хронологически. –

Смежные вопросы