Что должен знать о времени каждый программист

Вся мировая транспортная система бы рухнула, используй каждая страна собственный временной стандарт. Поэтому все воздушные и морские суда сверяют свои часы с лондонским эталоном, называемым GMT и UTC. Разница между ними представляет сложную тему для неспециалистов.

Существующие хронометрические стандарты

Понятие «стандартное время» может иметь различные толкования в зависимости от контекста:

  1. Видимое солнечное - основано на длительности солнечного дня. Усредненная длительность суток принимается за 24 часа. Поскольку ось вращения планеты несколько наклонена и орбита имеет форму эллипса, реальная продолжительность суток может отличаться на 16 минут в ту или иную сторону;
  2. Среднее солнечное - отличается от предыдущего на корректировки, учитывающие эллиптичность орбиты и наклонность оси вращения Земли;
  3. Звездное . Устанавливается на основе наблюдений за прохождением определенных небесных светил через астрономический меридиан;
  4. Гринвичское - среднее солнечное время для меридиана, который проходит через всемирно известный пригород Лондона;
  5. Универсальное скоординированное - основано на работе атомных часов с поправкой на различные ошибки.

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

Среднее гринвичское время

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

Произошло это относительно недавно - во второй половине XIX века:

  • Ведущей морской и научной державой того времени была Британия. Корабли, курсировавшие между метрополией и колонией, всегда имели на борту хронометры, ориентировавшиеся на Лондон;
  • Официальное признание единого времени в Соединенном Королевстве произошло в 1847 году по инициативе Информационно-координационного центра Британских железных дорог;
  • Первым шагом на пути всемирного принятия английских стандартов стал Международный географический конгресс, проходивший в Антверпене в 1871 году. Он постановил, что используемый для целей картографии нулевой меридиан отныне будет проходить через Королевскую обсерваторию в Гринвиче (GMT);
  • В 1884 году в столице США Вашингтоне по инициативе президента страны Честера Артура прошла Международная медианная конференция. По итогам голосования 41 делегата от 26 стран, в качестве хронометрического эталона было принято GMT.

Всемирное скоординированное время

Большинство развитых наций приняли положения конференции 1884 года в течение последующих десяти лет. Однако местное солнечное гринвичское время в качестве всемирного эталона не просуществовало и ста лет. Ученые пришли к выводу, что целый ряд физических процессов будут приводить к неточной хронометрии по способу GMT:

  • Влияние сил приливов и отливов;
  • Изменение вращения земного шара из-за постепенного таяния ледникового щита на Южном полюсе (прямое следствие глобального потепления);
  • Смещение оси вращения планеты, что неизбежно влияет на изменение положения меридианов.

Выход из этой щекотливой ситуации был найден после изобретения атомных часов. К показаниям этого наиболее точного из всех существующих хронометров в 1972 году было привязано всемирное время, названное скоординированным (UTC).

Чтобы компенсировать влияние вращения планеты на солнечное время, в UTC периодически вводится корректировка - високосная секунда. Решение о поправке выносит Международное бюро времени в Париже. Високосные секунды вносятся летом (30 июня) или зимой (31 декабря). Интервал введения поправок может колебаться от 12 месяцев (с 1992 по 1994 годы), до нескольких лет (например, с 1999 по 2004 годы никаких уточнений не производилось).

Различия между двумя стандартами

Итак, со второй половины XX века международное сообщество однозначно высказалось в поддержку формата UTC. Однако морально устаревшая аббревиатура GMT до сих пор используется англичанами (сигналы точного времени канала «Би-би-си») и в интерфейсе ряда высокотехнологичных устройств.

Рассмотрим различия между этими двумя стандартами :

Основан на

Астрономические наблюдения (вращение планеты Земля)

Международное атомное время

Погрешность

Игнорирует характер движения небесных тел (Земли и Солнца) относительно друг друга

Нет данных

Вносимые корректировки

Никогда не вводились

Високосная секунда. В период с 1972 по 31 декабря 2016 года были внесены 27 високосных секунд.

Когда начинаются сутки

Когда был разработан

Середина XIX века

Середина XX века

Актуальность

Ограниченное применение в ряде стран Британского Содружества наций

Современный хронометрический стандарт. Вносятся предложения о вводе нового эталона на основе атомного и GPS-времени.

Проблемы времени: високосные секунды

Современная хронометрическая методика, связанная с необходимостью вводить дополнительную секунду, имеет ряд недостатков:

  1. Внесение корректировок отличается чрезвычайной сложностью алгоритмов расчета, нерегулярностью и непредсказуемостью. Ввиду этого, по методу UTC невозможно вычислять точные временные интервалы более чем на шесть месяцев вперед;
  2. Всемирное время уже не вполне соответствует солнечному времени;
  3. Негативное воздействие хроно-прыжков на судоходство и торговлю. 30 июня 2015 года Нью-Йоркская фондовая биржа была вынуждена прекратить свою работу из-за наступления аномальной 61-й минуты;
  4. Страдает и сфера высоких технологий. После корректировки 2003 года некоторые модели GPS-приемников выдали программную ошибку. В 2015 году были замечены сбои в работе Twitter, Instagram, Pinterest, Netflix и Amazon. Пострадали маршрутизаторы Cisco, система бронирования авиабилетов компании «Virgin». Эти проблемы возникают снова и снова: несмотря на публичность данных о високосных секундах, для большинства программистов они остаются загадкой.

В настоящее время международное сообщество рассматривает пути отказа от существующей системы (например, использование UT1 вместо UTC).

Современные высокотехнологичные устройства для обозначения международного времени используют две аббревиатуры - GMT и UTC. Разница между ними не превышает 0,9 с., поэтому при первом приближении они могут считаться идентичными. Однако для мировой финансовой системы эта крохотная разница является сущим кошмаром.

Видео о стандартах времени

В данном ролике Елена Пришвина расскажет, в каких единицах измеряют время и для чего нужны часовые пояса:

  • UTC : время на нулевом меридиане называется Всемирное координированное время, Universal Coordinated Time. Несовпадение акронима было вызвано необходимостью универсальности его для всех языков.
  • GMT : ранее вместо UTC использовалось среднее время по Гринвичу (Greenwich Mean Time, GMT), так как нулевой меридиан был выбран так, чтобы проходить через Гринвичскую королевскую обсерваторию.
  • Прочие часовые пояса могут быть записаны как смещение от UTC. Например, Австралийское восточное стандартное время (EST) записывается как UTC+1000, то есть время 10:00 по UTC есть 20:00 по EST того же дня.
  • Летнее время не влияет на UTC. Это всего лишь политическое решение смены часового пояса (смещения от UTC). Например, GMT всё ещё используется: это британское национальное время зимой. Летом оно становится BST.
  • Високосные секунды : по международному соглашению, UTC держится в не более чем 0,9 секунды от физической реальности (UT1, которое измеряется по солнечному времени) путём введения «високосной секунды» в конце последней минуты года по UTC или последней минуты июня.
  • Високосные секунды не обязаны объявляться (астрономами) более чем за 6 месяцев до их введения. Это представляет собой проблему, если вам требуется какое-либо планирование с секундной точностью на протяжении более 6 месяцев.
  • Время Unix : измеряется количеством секунд, прошедших с «эпохи» (начало 1970 года по UTC). На время Unix не оказывают влияния часовые пояса или летнее время.
  • Согласно стандарту POSIX.1, для времени Unix предполагается обрабатывать високосную секунды путём повторения предыдущей секунды, например: 59.00 59.25 59.50 59.75 59.00 ← повтор 59.25 59.50 59.75 00.00 ← инкремент 00.25 Это компромисс: вы не можете как-либо выразить високосную секунду в ваших системных часах и ваше время гарантированно пойдёт в обратную сторону. С другой стороны, каждый день равен в точности 86 400 секундам, и вам не понадобится таблица всех прошлых и будущих високосных секунд для того, чтобы перевести Unix-время в удобную для человека форму часы-минуты-секунды.
  • Предполагается, что ntpd произведёт повтор после того, как получит «високосные биты» от вышестоящих серверов времени, но я также видел и то, как он не делает ничего: система переходит на одну секунуду в будущее, затем медленно сползает обратное на правильное время.

Что должен знать о времени каждый программист

  • Часовые пояса относятся к уровню презентации
    Большинство вашего кода не должно заниматься часовыми поясами или местным временем, оно должно передавать Unix-время как оно есть.
  • Когда измеряете время, измеряйте Unix-время. Это UTC. Его просто получить (системными функциями). Оно не имеет часовых поясов или летнего времени (и високосных секунд).
  • Когда храните время, храните Unix-время. Это одно число.
  • Если вы хотите сохранить время, пригодное для чтения человеком (например, в логах), постарайтесь сохранить его вместе с Unix-временем, а не вместо .
  • Когда отображаете время, всегда включайте в него смещение часового пояса. Формат времени без смещения бесполезен.
  • Системные часы не точны.
  • Вы в сети? Системные часы каждой другой машины не точны по-разному.
  • Системные часы могут, и будут, перепрыгивать вперёд и назад во времени из-за вещей, которые вне вашего контроля. Ваша программа должна быть разработана таким образом, чтобы пережить это.
  • Отношение количества секунд системных часов к количеству настоящих секунд - не точно и может меняться. В основном это зависит от температуры.
  • Не используйте слепо gettimeofday() . Если вам нужны монотонные (постоянно увеличивающиеся) часы, посмотрите на clock_gettime() . [Вариант для Java: вместо System.currentTimeMillis() используйте System.nanoTime() ]
  • ntpd может изменять системное время двумя способами:
    • Шаг: часы перескакивают вперёд или назад к правильному времени немедленно
    • Подкручивание: изменение частоты системных часов так, чтобы они медленно сдвигались в сторону правильного времени.
    Подкручивание более предпочтительно, потому что оно менее разрушительно, но полезно только для корректировки небольшой разницы.

Специальные случаи

  • Время проходит со скоростью одну секунду за секунду для всех наблюдателей. Частота удалённых часов по отношению к наблюдателю зависит от скорости и гравитации. Часы внутри спутников GPS регулируются для преодоления эффектов относительности.
  • MySQL хранит столбцы типа DATETIME в виде упакованных в числа значений «YYYYMMDD HHMMSS» Если вы озаботились хранением отметок времени, храните их как целое число и используйте для преобразования функции UNIX_TIMESTAMP() и FROM_UNIXTIME().

До сих пор в компьютерных настройках Windows часовой пояс задается аббревиатурой GMT. Это что такое и как соотносится с современной системой координирования времени UTC? Об этом мы расскажем в нашей статье. в точке местонахождения относительно Гринвича сможет далеко не каждый. Но мы попробуем разъяснить этот вопрос популярным языком. Прежде всего, нужно ответить на вопрос: "GMT - это что такое?" Как расшифровывается данная аббревиатура?

Британский снобизм

В старину время устанавливали по полудню. Когда солнце было в зените, то есть достигало своей максимально высокой точки на видимом небосклоне, считалось, что это - двенадцать часов дня. С развитием международной торговли возникла необходимость согласовать время в единую систему. Точкой такого отсчета стал Он проходит через Королевскую обсерваторию в местечке Гринвич, недалеко от Лондона.

Таким образом, аббревиатура GMT расшифровывается как Greenwich Mean Time. Все территории, которые находятся к западу от Гринвича, отстают от его времени, а те, которые расположены восточнее, опережают его. Существует еще один значимый меридиан на поверхности планеты Земля. Это Территория, расположенная к востоку от нее, живет (в прямом смысле этого слова) вчерашним днем. В 1972 году новая аббревиатура UTC сменила GMT. Это что за время? Аббревиатура расшифровывается как «Универсальное скоординированное время».

Часовые пояса

В русскоязычной метрологии употребляется аббревиатура СГВ вместо GMT. Это что такое? Расшифровываются буквы как «Среднее географическое время». Но опять-таки от Гринвича нам никуда не деться. Ведь весь мир ведет отсчет часов от нулевого меридиана. Если быть пунктуальным и точно определять время для каждой точки на земном шаре, нужно знать удаленность ее от Гринвича к западу или востоку. А Coordinated Universal Time (иными словами UTC) отображает в основном полдень в определенных странах (или их частях). Если GMT - время, не знающее политических границ, то часовые пояса распространяются часто на целое государство (если оно не очень сильно простирается с запада на восток). Таким образом, UTC+0 - время не в и на нулевом меридиане, а во всей Великобритании и Ирландии, а также Исландии, Португалии, Марокко и т. д. Но высчитывание часов по системе УТС ведется по тому же принципу, что и в GMT.

Время летнее и зимнее

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

Страны, лежащие вблизи экватора, где в любое время года приблизительно равна двенадцати часам, не сдвигают сезонно стрелки. Они постоянно живут по зимнему (истинному) времени. На этом основании и Российская Федерация решила не сдвигать ежегодно стрелки на час вперед. Кстати, еще одна страна, лежащая в высоких широтах, отказалась переходить на летнее время. Это Исландия. Островное государство живет по Среднему Гринвичскому времени (GMT+0). Лежащие приблизительно на том же меридиане Великобритания и Ирландия зимой находятся в UTC+0, а летом - в UTC+1.

Для чего нужны UTC и GMT

Время - это понятие, любящее точность. Для координированных действий диспетчерским службам, находящимся в удаленных друг от друга точках Земли, необходимо знать, сколько сейчас часов, минут и секунд. Также потребность в скоординированном времени имеют и радиовещатели различных частот. UTC необходимо для установления определенного стандарта в навигационных и научных целях. На протяжении всего девятнадцатого века моряки британского флота, бороздя Мировой океан, высчитывали время по GMT. Двигаясь к западу от Гринвича, они отнимали часы, а к востоку - плюсовали. По этому принципу сейчас поделен на временные пояса. Например, Владивосточное время соответствует GMT+11, Грузинское - GMT+4, Гавайско-Алеутское - GMT-10, Московское - GMT+4, Стандартное Восточное время (оно используется для Нью-Йорка и прилегающих к Атлантическому океану территорий США и Канады, а также на Ямайке, в Панаме, Гаити, Багамах) - GMT-5.

Поясное время – система счёта часового времени, основанная на разделении поверхности Земли на 24 часовых пояса, через 15° по долготе. Время в пределах одного часового пояса считается одинаковым. В 1884 году, на Международной конференции было принято решение о применении этой системы. В соответствии с международным соглашением 1883 года, начальным («нулевым») меридианом считается тот, который проходит через Гринвичскую обсерваторию в пригороде Лондона. Местное гринвичское время (GMT), условились называть всемирным или «Мировым временем» UTC/GMT/Z.

На территории России, с 28 марта 2010 года – 9 часовых поясов (до этого было 11 тайм-зон). Самарская область и Удмуртия перешли на Московское время (второй часовой пояс). Кемеровская обл. (Кузбасс) – на Омское (MCK+3). Камчатский край и Чукотка – на Магаданское (МСК+8). В этих пяти субъектах Федерации, 28 марта 2010 – часовые стрелки не переводили.

Упраздняются два пояса – третий (Самарский, МСК+1) и одиннадцатый (Камчатский, МСК+9). Всего их становится 9, и максимальный разброс по времени в нашей стране сокращается с 10 до 9 часов.

В России, с марта 2011 года, после перехода на летнее время, стрелки часов больше не будут переводиться.

Часовой пояс Москвы, по стабильному времени: +4 (UTC/GMT + 4:00)

UTC (coordinated universal time) — это всемирный стандарт для определения времени и даты. Прежде он был известен как Гринвичское среднее время (GMT). Другие сокращения, относящиеся к этому стандарту — «universal time» и «world time.»
Для чего нужно время по UTC?

UTC используется международными коротковолновыми вещателями в их частотных расписаниях и программных планах. Радиолюбители-эфирщики, слушатели-коротковолнивики, военные, и сервисные радиослужбы также широко используют UTC. Гринвичское среднее время было основано на времени на нулевом меридиане, который проходит через Гринвич (Англия). GMT стал мировым временем и стандартом даты, потому что он использовался Британским королевским морским и торговым флотом в течение девятнадцатого столетия. Сегодня по UTC работают прецизионные атомные часы, коротковолновые сигналы времени и спутники, чтобы гарантировать надежность и точность стандарта для научных и навигационных целей. Несмотря на уточнения в точности, стандарт UTC использует те же принципы, что и в GMT.
Какую часовую систему использует UTC?

UTC использует 24-часовую систему системы обозначения времени. «1:00 AM» в UTC выражается как 0100 и объявляется «zero one hundred». Пятнадцать минут второго выражаются как 0115; тридцать восемь минут второго — 0138 (обычно произносится «zero one thirty-eight»). Следующая минута после 0159 — 0200. Следующая минута после 1259 — 1300 (произносится «thirteen hundred»). Это продолжается до 2359. Следующая минута — 0000 («zero hundred») — начало новых суток.
Какая главная ошибка при пересчете времени?

Главный источник замешательства при использовании UTC — то, что дата также изменяется в соответствии с UTC. Например, QSO, проведенное в пятницу в 23:00 UTC в Москве вы запишете в субботу в 3:00 московского времени. И обратно, если вы провели QSO в Москве в понедельник 3:00 м.в., в журнале следует указывать «Воскресенье, 23:00 UTC.