Пятница, 22 ноября, 2024

Как «взломать» мозг программисту: попросить написать его автоматические часы

Обычные часы в нашем смартфоне всегда показывают точное местное время, в каком бы городе или стране мы ни оказались. Это настолько привычно и удобно, что, кажется, в этом нет никаких трудностей в программировании. Но на самом деле человечество так поиграло со временем на Земле, что это легко «взломает» мозг программисту. Вот подборка особенностей временных зон, с которыми придется справиться, чтобы создать автоматические часы.

Неправда 1: Отклонение от UTC идет от -12 до +12

Сегодня наши гаджеты отсчитывают время в соответствии с Всемирным координированным временем (Coordinated Universal Time, UTC). Его точка отсчета проходит через «нулевой меридиан», который, к известно, проходит через находящуюся в Лондоне обсерваторию Гринвич.

Поскольку Земля круглая, а сутки имеют 24 часа, может показаться, что на планете всего 24 часовых зоны UTC – 12 зон к востоку и 12 зон к западу. Но это не так.

Оказывается, отклонения от UTC охватывают от –12 до +14. Да, +14. Это дает вам 27 часов, на которые можно изменить UTC (не забудьте о нулевом отклонении).

Как это работает? UTC-12 имеет такое же время, как и UTC+12, но на один день отстает. То же касается UTC-11 и UTC+13.

Почему такой сумасшедший диапазон? Это явилось следствием решения жителей островов Тихого океана, которые выбрать определенную сторону международной линии изменения даты.

Это приводит к очень неравной международной линии изменения даты.

Неправда 2: каждое отклонение от UTC соответствует ровно одному часовому поясу

Вот 10 разных часовых поясов, которые все имеют UTC+5:

  • Aqtobe Time — Время Актобе
  • Mawson Time — Время Моусон
  • Maldives Time — Мальдивское время
  • Oral Time — Время Орала
  • Pakistan Standard Time — Пакистанское стандартное время
  • French Southern and Antarctic Time — Французское время Южной Франции и Антарктиды
  • Tajikistan Time — Таджикское время
  • Turkmenistan Time – Туркменское время
  • Узбекистан Time — Узбекистанское время
  • Екатеринбург Time — Время Екатеринбурга

Вы, возможно, спрашиваете: если все они имеют одно и то же отклонение от UTC, почему все эти регионы не могут использовать один и тот же часовой пояс? Возможно, пакистанцы не были заинтересованы в том, чтобы быть в одно время с Екатеринбургом.

Неправда 3: В мире больше стран, чем часовых поясов

  • Многие страны хотят иметь свой собственный часовой пояс
  • Некоторые страны разбиваются на несколько часовых поясов (например, восточное и западное время)
  • Военное время использует только 25 часовых поясов, по одному на каждый час от UTC-12 до UTC+12
  • Летнее время. Больше об этом ниже

Всего, 195 стран мира используют 244 часовых пояса.

Неправда 4: У каждого часового пояса есть одно принятое наименование

Замечали ли вы, что каждый часовой пояс состоит только из английских слов? Очень щедро со стороны, например, испаноязычных или франкоязычных стран использовать английский язык, не правда ли?

Но все же есть местные названия. Eastern Standard Time, Tiempo del Este и Heure Normale de l’Est – это разные названия для того же часового пояса.

Неправда 5: Часовые пояса всегда отклоняются от UTC на целое количество часов

Индийское стандартное время отклоняется на пять и пол часа от UTC. Есть и другие примеры, когда в новом часовом поясе приходится настраивать не только часы, но и минуты.

Неправда 6: Хорошо, часовые пояса всегда отклоняются от UTC на целое количество часов и полчаса

Непал любит быть с 45-минутным отклонением от UTC.

Почему эти дополнительные 15 минут так важны для них? Потому что они хотят, чтобы их гора имела солнце прямо над собой в обед.

Но это заставляет задуматься: что произойдет, если гора когда-нибудь изменит свое положение?

Неправда 7: Страна остается в том же отклонении от UTC в течение всего года

Не забывайте о времени сохранения дневного света! Или, как говорят в Европе, «летнее время».

Страны, которые используют летнее время, изменяют свое отклонение от UTC дважды в год.

Неправда 8: Существует стандартный формат для определения часовых поясов

Есть традиционные названия часовых поясов, которые мы привыкли видеть. Например: Тихоокеанское стандартное время. Но это не официальный термин для этих названий, они просто нестандартизированы.

Ключи зон IANA – это наиболее официальный стандарт, который можно получить по часовым поясам. Это совсем не официально, но это нечто, вокруг чего объединилось сообщество программистов.

Это поддерживаемая вручную база данных, содержащая все известные данные о часовых поясах, представляющих всю историю местного времени для мест по всему миру. Она не дает ни одной зоне названия, предпочитая название важнейшего города в нем.

Называние временной зоны за самым известным городом в ней приводит к понятному, но плохому решению. Полные названия часовых поясов сопровождаются сложностями названий, о которых мы говорили выше. Если вам этого было мало, есть еще и политические последствия признания некоторых часовых поясов, таких как Израильское стандартное время.

Некоторые разработчики выбрали безопасный путь и идентифицировали часовые пояса только под названием важного города у них, не тратя времени на картографирование к общему имени. Вот почему выбор часового пояса в Ubuntu заставляет вас выбрать Нью-Йорк, а не Eastern Standard Time.

Еще есть вариант забыть о часовых поясах, используя отклонения от UTC. Международный стандарт W3 отказался от идеи часовых поясов и объявил, что инженеры должны сохранять только отклонения от UTC для метки времени.

Интересный факт: многие программные интерфейсы (API) для получения отклонения UTC региона хотят только UTC-время и широту/долготу. Это позволяет им четко определить любой момент с непогрешимостью и не беспокоиться о летнем времени. Можно рассматривать это как четвёртый стандарт.

Неправда 9: Летнее время начинается в то же время каждый год

Каждая страна выбирает время начала своего собственного летнего времени

Неправда 10: Часовой пояс страны никогда не меняется

Почти каждый год какая-нибудь страна принимает закон, чтобы изменить свой часовой пояс.

В особо памятном примере несколько лет назад острова Самоа хотели быть на другой стороне международной линии изменения даты, чтобы иметь те же выходные, что и их австралийские торговые партнеры. Так что в полночь в начале 29 декабря они изменили свое отклонение от UTC с -11 на +13 UTC, пропустив 30 декабря и перейдя прямо на 31 декабря.

С положительной стороны, теперь самоанцы могут праздновать новый год на западном острове, а затем переплыть на Американские острова Самоа, находящиеся по другую сторону линии смены дат, на вторую новогоднюю вечеринку на следующую ночь.

Неправда 11: Страна остается в том же часовом поясе во время летнего времени

Интересная вещь о летнем времени: он действительно не меняет отклонения от UTC часового пояса. Вместо этого страны с летним временем переходят на другой часовой пояс, с другим названием.

К примеру: Техас переходит из Центрального стандартного времени на Центральное летнее время. Чили переходит из Чилийского стандартного времени на Чилийское летнее время

Неправда 12: Летнее время начинается примерно в марте и заканчивается примерно в октябре

У Южного полушария есть свое лето в другой половине года. Изменяется шаблон.

Иногда летнее время начинается и заканчивается точно один раз в год: когда начинается луна Рамадан. Некоторые мусульманские страны выходят из летнего времени, а затем снова вступают в летнее время после окончания Рамадана. Это меняет время на закате и время окончания поста приходит быстрее

Неправда 13: У каждого часового пояса есть свое название

Какая страна имеет право претендовать на Eastern Standard Time? Северная Америка определила права на это имя, но вы думаете, что никто не возражал? Австралия считала, что это звучит как хорошее название для использования, и потому даже когда остальной мир ссылается на ее часовой пояс как Австралийский Восточный стандартный час, некоторые из ее собственных граждан просто называют его «Eastern Standard Time».

Неправда 14: У каждого часового пояса есть собственная аббревиатура

Какая из этих расшифровок подразумевается, когда кто-нибудь говорит CST?

  • Центральное стандартное время
  • Китайское стандартное время
  • Кубинское стандартное время

И помните, как название часового пояса меняется в летнее время? Многие об этом не знают и продолжают использовать неправильные аббревиатуры в течение месяцев летнего времени. CST может использоваться для Центрального летнего времени.

Если для часовых поясов нет стандартного названия, можно ли ожидать стандартную аббревиатуру для них?

Неправда 15: Всегда существует однозначное превращение из одного часового пояса в другой

Скажем, нужно 5 вечера по Восточноамериканскому стандартному времени на Пакистанское стандартное время. Какое именно Восточноамериканское стандартное время подразумевается — американское или австралийское? И действует ли летнее время или нет?

Ладно, это сложно. Но уверенно, если мы включим дату и точный город, мы сможем надежно сделать преобразование, не правда ли?

А если дата и время — 1:30 ночи 1 ноября 2020 года, когда заканчивается летнее время в США и часы переводятся назад? 1:30 ночи происходит дважды в то утро, какое из них мы имели в виду?

Неправда 16: Программная библиотека часовых поясов может распознавать любой часовой пояс

Помните все эти возможные названия и форматы часовых поясов? Большинство библиотек библиотек поддерживают только один.

И они могут быть ограничены часовыми поясами, установленными на вашем локальном компьютере.

Помните, что часовые пояса могут изменяться по желанию местного правительства. Тогда библиотеке требуется внешний набор данных для обновления вычислений. Этот внешний набор данных может быть часовым поясом, установленным на вашем компьютере.

Неправда 17: Время в летнее время меняется по всей стране

В США Аризона не практикует летнее время

Неправда 18: Все государство переходит на летнее время

В Аризоне есть город Навахо Нейшн, соблюдающий летнее время. Аризона не практикует летнее время.

Неправда 19: Кроме летнего времени, каждый город в государстве придерживается одного и того же часового пояса

В Индиане, США, большинство городов придерживается Восточноамериканского стандартного времени, но несколько решили придерживаться Центрального стандартного времени.

Неправда 20: Каждый город находится в одном часовом поясе

В прошлом несколько раз граница штата или часовой пояс были проведены без внимания к тому, кто именно проживал там, разрезая город пополам. Существует удивительно большое количество примеров. Это также причина, почему координаты GPS надежнее, чем названия городов, для определения часового пояса.

  • Колумбус, Джорджия. Колумбус находится по восточному времени, но большая часть городской территории находится в Феникс-Сити, штат Алабама, официально живущем по центральному времени.
  • Мичиган-Сити, Индиана. Мичиган-Сити находится в центральной части, но берег постоянно заселен до юго-западного Мичигана, который находится в восточном времени.
  • В зависимости от времени года районы Луисвилля, Цинциннати, Саут-Бенд и Элкхарт расположены на границе Индианы таким образом, что они пересекают линию часового пояса.
  • Юма, Аризона. Часть года в Юме другое время, чем в соседней Калифорнии. Однако очень малая часть городской территории пересекает Калифорнию.

На международном уровне труднее найти примеры:

  • На палестинских территориях используется несколько иной график перехода на летнее время, чем в Израиле, поэтому городская территория Иерусалима разделена на части года. Кроме того, в последнее время Иордания делала некоторые странные вещи с летним временем, поэтому время между Эйлатом (Израиль) и Акабой (Иордания) иногда меняется.
  • Асунсьон (Парагвай) находится через реку от меньшего аргентинского города под названием Клоринда, но непонятно, действительно ли они образуют одну урбанизированную территорию. Прямо между ними нет моста. Вниз по реке находятся Посадас (Аргентина) и Энкарнасьон (Парагвай), между которыми есть мост.
  • Сингапур находится через пролив от Батама (Индонезия), который, по крайней мере официально, находится в другом часовом поясе.
  • Ашкабад (Туркменистан, вблизи Ирана) и Лахор (Пакистан, вблизи Индии) находятся близко, но в разное время.

Неправда 21: Для каждого места на Земле определен часовой пояс

На северном и южном полюсах нет официального часового пояса. Исследователи там просто соблюдают время своей собственной страны.

По материалам: Zain Rizvi

НАПИСАТИ ВІДПОВІДЬ

Коментуйте, будь-ласка!
Будь ласка введіть ваше ім'я

Євген
Євген
Евгений пишет для TechToday с 2012 года. По образованию инженер,. Увлекается реставрацией старых автомобилей.

Vodafone

Залишайтеся з нами

10,052Фанитак
1,445Послідовникислідувати
105Абонентипідписуватися