Инструмент меток времени

Онлайн-инструмент преобразования меток времени с поддержкой конвертации между Unix-меткой и датой-временем с учётом нескольких часовых поясов

Текущая метка времени

Метка времени в дату

Результат преобразования будет показан здесь

Дата в метку времени

Результат преобразования будет показан здесь

Сведения о метках времени

Основы вычисления времени


I. Unix-метка времени: универсальный «язык времени»

Определение:
Метка времени Unix (Unix Timestamp) — это количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC (без учёта високосных секунд). Она служит не зависящим от платформы и часового пояса стандартом представления времени в компьютерных системах.

Авторитетные источники определения:

  • Согласно стандарту POSIX (IEEE Std 1003.1-2017)[1], метка времени Unix определяется как «секунды с начала эпохи».
  • Страница справки Linux time.h[2] определяет её тип данных как time_t (обычно знаковое 32- или 64-битное целое).

Ключевые особенности:

  1. Независимость от часового пояса: метки времени Unix одинаковы во всём мире для одного и того же момента.
    Пример: и 2023-10-01 08:00:00 (UTC+8), и 2023-10-01 00:00:00 UTC имеют метку 1696118400.
  2. Отсутствие високосных секунд: исключает поправки на високосные секунды, из-за чего расходится примерно на 27 секунд с Международным атомным временем (TAI) (на 2023 год)[3].
  3. Ограничение 32 бит: 32-битные метки переполнятся в ноль 19 января 2038 года (проблема «2038 года»)[4].

II. GMT против UTC: от астрономических наблюдений к атомным часам

Хотя их часто используют как взаимозаменяемые, GMT (среднее время по Гринвичу) и UTC (всемирное координированное время) имеют принципиальные различия:

Аспект GMT (среднее время по Гринвичу) UTC (всемирное координированное время)
Определение Основано на вращении Земли (астрономические наблюдения) Основано на атомных часах (колебания атома цезия), отличается от GMT менее чем на 0,9 с
Коррекция Без периодической калибровки Синхронизируется с вращением Земли через високосные секунды[5]
Авторитет Изначально определено Гринвичской обсерваторией, ныне используется как обозначение часового пояса (UTC+0) Поддерживается ITU[6] и BIPM[7]

Ключевые факты:

  • Закат GMT: UTC заменил GMT как международный стандарт времени в 1972 году[8], хотя «GMT» по-прежнему широко используется для обозначения часового пояса UTC+0.
  • Правила сокращений часовых поясов: согласно базе часовых поясов IANA[9], и Etc/UTC, и Etc/GMT обозначают нулевое смещение, но последнее использует обратные знаки (например, GMT+1 на самом деле означает UTC-1).

III. Преобразование часового пояса: от метки времени к локальному времени

Формула «метка времени → локальное время»:
Локальное время = Метка времени Unix + Смещение часового пояса + Компенсация високосной секунды

Авторитетные инструменты и стандарты:

  1. База часовых поясов IANA (ранее база Олсона)[9]:
    • Содержит правила часовых поясов всего мира (например, America/New_York обозначает UTC-5/UTC-4)
    • Используется по умолчанию в Linux, macOS, системах Java
  2. Стандарт ISO 8601[10]:
    • Задаёт формат времени YYYY-MM-DDTHH:mm:ss±HH:mm (например, 2023-10-01T08:00:00-04:00)
  3. RFC 3339[11]:
    • Определяет интернет-формат времени (совместимый с ISO 8601), требует явного смещения часового пояса

Пример кода (Python):

import datetime

timestamp = 1696118400
# Convert to UTC
utc_time = datetime.datetime.utcfromtimestamp(timestamp)  # 2023-10-01 00:00:00
# Convert to Eastern Time (UTC-4)
local_time = datetime.datetime.fromtimestamp(timestamp, datetime.timezone(datetime.timedelta(hours=-4)))  # 2023-10-01 04:00:00-04:00

IV. Високосные секунды: «обработка исключений» меток времени

Механизм високосной секунды:

  • Международная служба вращения Земли (IERS)[5] определяет вставку високосной секунды на основе изменений вращения Земли (обычно 31 декабря или 30 июня)
  • На 2023 год накопленная разница високосных секунд между UTC и TAI составляет 37 секунд[3]
Совместимость систем: Система/Язык Обработка високосных секунд Официальная документация
Linux Ядро поддерживает вставку високосных секунд, требуется ручная настройка Обработка високосных секунд в ядре Linux
Java API java.time игнорирует високосные секунды Документация Oracle по Java
Публичный NTP Google Использует стратегию «размазывания високосной секунды» при её вставке Размазывание високосных секунд в Google

V. Авторитетные ссылки


VI. Резюме

  • Метка времени Unix фундаментальна для кросс-часовой программной логики; учитывайте проблему переполнения 2038 года.
  • UTC — современный международный стандарт, тогда как GMT используется лишь как обозначение часового пояса (UTC+0).
  • Преобразования часовых поясов опираются на базу IANA, а обработку високосных секунд следует сверять с бюллетенями IERS.

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

Ссылки

[1] Стандарт времени POSIX: IEEE Std 1003.1-2017
[2] Страница справки Linux time.h: выполните man 3 time в терминале
[3] Бюллетень високосных секунд BIPM: История TAI-UTC
[5] Международная служба вращения Земли (IERS): Объявления високосных секунд
[6] Международный союз электросвязи (ITU): Определение UTC
[9] База часовых поясов IANA: Официальный репозиторий
[11] Формат времени RFC 3339: Спецификация RFC 3339