Звичайний годинник в нашому смартфоні завжди показує точний місцевий час, в якому б місті чи країні ми не опинилися. Це настільки звично та зручно, що здається в цьому немає жодних труднощів в програмуванні. Але насправді людство так погралося з часом на Землі, що це легко «зламає» мозок програмісту. Ось добірка особливостей часових зон, з якими доведеться впоратися, щоб створити автоматичний годинник.
Сьогодні наші гаджети відраховують час відповідно до Всесвітнього координованого часу (Coordinated Universal Time, UTC). Його точка відліку проходить через «нульовий меридіан», який, к відомо, проходить через обсерваторію Грінвіч, що знаходиться в Лондоні.
Оскільки Земля кругла, а доба має 24 години, може здатися, що на планеті всього 24 часових зони UTC – 12 зон на схід та 12 зон на захід. Але це не так.
Виявляється, відхилення від UTC охоплюють від -12 до +14. Так, +14. Це дає вам 27 годин, на які можна змінити UTC (не забудьте про нульове відхилення).
Як це працює? UTC-12 має такий самий час, як UTC+12, але на один день відстає. Те ж саме стосується UTC-11 і UTC+13.
Чому такий божевільний діапазон? Це стало наслідком рішення жителів островів Тихого океану, які вибрати певну сторону міжнародної лінії зміни дати.
Це призводить до дуже нерівної міжнародної лінії зміни дати.
Ось 10 різних часових поясів, які всі мають UTC+5:
Ви, можливо, питаєтеся: якщо всі вони мають одне й те ж відхилення від UTC, чому всі ці регіони не можуть використовувати один і той же часовий пояс? Можливо, пакистанці не були зацікавлені в тому, щоб бути в одному часі з Єкатеринбургом.
Всього, 195 країн світу використовують 244 часових пояси.
Чи помічали ви, що кожен часовий пояс складається тільки з англійських слів? Дуже щедро з боку, наприклад, іспаномовних чи франкомовних країн використовувати англійську мову, чи не так?
Але все ж є місцеві назви. Eastern Standard Time, Tiempo del Este та Heure Normale de l’Est – це різні назви для того самого часового поясу.
Індійський стандартний час відхиляється на п’ять годин та пів години від UTC. Є й інші приклади, коли в новому часовому поясі доводиться налаштовувати не лише години, а й хвилини.
Непал любить бути з 45-хвилинним відхиленням UTC.
Чому ці додаткові 15 хвилин так важливі для них? Тому що вони хочуть, щоб їхня гора мала сонце прямо над собою в обід.
Але це заставляє задуматися: що станеться, якщо гора коли-небудь змінить своє положення?
Не забувайте про час збереження денного світла! Або, як кажуть у Європі, “літній час”.
Країни, які застосовують літній час, змінюють своє відхилення від UTC двічі на рік.
Є традиційні назви часових поясів, які ми звикли бачити. Наприклад: Тихоокеанський стандартний час. Але це не є офіційний термін для цих назв, вони просто нестандартизовані.
Ключі зон IANA – це найбільш офіційний стандарт, який можна отримати щодо часових поясів. Це зовсім не офіційно, але це щось, навколо чого об’єдналася спільнота програмістів.
Це підтримувана вручну база даних, яка містить всі відомі дані про часові пояси, що представляють всю історію місцевого часу для місць по всьому світу. Вона не дає жодній зоні назви, віддаючи перевагу назві найважливішого міста в ній.
Називання часової зони за найвідомішим містом в ній призводить до зрозумілого, але поганого рішення. Повні назви часових поясів супроводжуються складнощами назв, про які ми говорили вище. Якщо цього вам було мало, є ще й політичні наслідки визнання деяких часових поясів, таких як Ізраїльський стандартний час.
Деякі розробники обрали безпечний шлях і ідентифікували часові пояси лише за назвою важливого міста в них, не витрачаючи часу на картографування до спільного імені. Ось чому вибір часового поясу в Ubuntu заставляє вас вибрати “Нью-Йорк”, а не Eastern Standard Time.
Ще є варіант забути про часові пояси, використовуючи відхилення від UTC. Міжнародний стандарт W3 відмовився від ідеї часових поясів і оголосив, що інженери повинні зберігати тільки відхилення від UTC для мітки часу.
Цікавий факт: багато програмних інтерфейсів (API) для отримання відхилення UTC регіону хочуть тільки UTC-час та широту/довготу. Це дозволяє їм чітко визначити будь-який момент із непомилковістю і не турбуватися про літній час. Можна розглядати це як четвертий стандарт.
Кожна країна обирає час початку свого власного літнього часу
Майже щороку яка-небудь країна приймає закон, щоб змінити свій часовий пояс.
У особливо пам’ятному прикладі кілька років тому острови Самоа хотіли бути на іншому боці міжнародної лінії зміни дати, щоб мати ті самі вихідні, що й їх австралійські торгові партнери. Так що в північ на початку 29 грудня вони змінили своє відхилення від UTC з -11 на +13 UTC, пропустивши 30 грудня і перейшовши прямо на 31 грудня.
З позитивного боку, тепер самоанці можуть святкувати новий рік на західному острові, а потім перепливти на Американські острови Самоа, які знаходяться по інший бік лінії зміни дат, на другу новорічну вечірку наступної ночі.
Цікава річ про літній час: він насправді не змінює відхилення від UTC часового поясу. Замість цього країни з літнім часом переходять на інший часовий пояс, з іншою назвою.
Наприклад: Техас переходить з Центрального стандартного часу на Центральний літній час. Чилі переходить з Чилійського стандартного часу на Чилійський літній час
Південна півкуля має своє літо в іншій половині року. Змінюється шаблон.
Іноді літній час починається і закінчується точно один раз на рік: коли починається місяць Рамадан. Деякі мусульманські країни виходять з літнього часу, а потім знову вступають в літній час після закінчення Рамадану. Це змінює час на заході сонця і час закінчення посту приходить швидше
Яка країна має право претендувати на “Eastern Standard Time”? Північна Америка визначила права на це ім’я, але чи ви думаєте, що ніхто не заперечував? Австралія вважала, що це звучить як гарна назва для використання, і тому навіть коли решта світу посилається на її часовий пояс як Австралійський Східний стандартний час, деякі з її власних громадян просто називають його “Eastern Standard Time”.
Яка з цих розшифровок мається на увазі, коли хтось каже CST?
І пам’ятаєте, як назва часового поясу змінюється під час літнього часу? Багато людей про це не знають і продовжують використовувати неправильні абревіатури протягом місяців літнього часу. CST може бути використано для Центрального літнього часу.
Якщо для часових поясів немає стандартної назви, чи можна очікувати стандартну абревіатуру для них?
Скажімо, треба 5 вечора за Східноамериканським стандартним часом на Пакистанський стандартний час. Який саме Східноамериканський стандартний час мається на увазі — американський чи австралійський? І чи діє літній час, чи ні?
Добре, це складно. Але впевнено, якщо ми включимо дату і точне місто, ми зможемо надійно зробити перетворення, чи не так?
А якщо дата і час — 1:30 ночі 1 листопада 2020 року, прямо коли закінчується літній час в США і годинник переводиться назад? 1:30 ночі відбувається двічі в той ранок, яке з них ми мали на увазі?
Пам’ятаєте всі ці різні можливі назви та формати часових поясів? Більшість програмних бібліотек підтримують лише один.
І вони можуть бути обмежені часовими поясами, встановленими на вашому локальному комп’ютері.
Пам’ятайте, що часові пояси можуть змінюватися за бажанням місцевого уряду. Тоді бібліотеці потрібно зовнішній набір даних для оновлення її обчислень. Цей зовнішній набір даних може бути саме часовими поясами, встановленими на вашому комп’ютері.
У США Аризона не практикує літній час
В Аризоні є місто Навахо Нейшн, яке дотримується літнього часу. Аризона не практикує літній час.
В Індіані, США, більшість міст дотримується Східноамериканського стандартного часу, але кілька вирішили дотримуватися Центрального стандартного часу
У минулому декілька разів межа штату або часовий пояс були проведені без уваги до того, хто саме проживав там, розрізаючи місто пополам. Існує дивовижно велика кількість прикладів. Це також причина, чому координати GPS надійніше, ніж назви міст, для визначення часового поясу.
На міжнародному рівні важче знайти приклади:
На північному і південному полюсі немає офіційного часового поясу. Дослідники там просто дотримуються часу своєї власної країни.
За матеріалами: Zain Rizvi
Підписуйтесь на канал в Telegram та читайте нас у Facebook. Завжди цікаві та актуальні новини!