Что такое Unix-время (epoch)?
Unix-время, или epoch-время (Unix timestamp), показывает количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC: этот момент называют эпохой Unix. Например, 1700000000 соответствует 14 ноября 2023 года, 22:13:20 UTC.
Компьютеры хранят время именно так, потому что одно число легко сравнивать, сортировать и передавать между системами, и оно означает один и тот же момент в любой точке мира. Часовые пояса появляются, только когда вы превращаете его в дату для человека. Unix-время игнорирует секунды координации (leap seconds): каждые сутки считаются ровно 86 400 секундами.

Секунды, миллисекунды, микросекунды или наносекунды?
Метки времени бывают разной точности. Конвертер определяет единицу по количеству цифр, а в меню единиц её можно выбрать вручную:
Классический Unix timestamp, который используют Linux, PHP, time.time() в Python (как число с плавающей точкой), поле exp в JWT и большинство API. Пример: 1700000000.
Используются в JavaScript (Date.now()), Java, а также во многих базах данных и логах. Пример: 1700000000000.
Используются в UnixMicro() в Go и во многих высокоточных логах и трассировках. Пример: 1700000000000000.
Используются в UnixNano() в Go, InfluxDB и системах мониторинга. Пример: 1700000000000000000.
Advertisement
Как перевести Unix timestamp в дату
Введите его на вкладке Timestamp в дату. Запятые, пробелы и дробная часть (например, 1700000000.5) допустимы, а отрицательные значения дают даты до 1970 года.
Значок показывает, как было прочитано число: в секундах, миллисекундах, микросекундах или наносекундах. Если автоопределение ошиблось, выберите единицу сами.
Вы получите дату по UTC и в вашем часовом поясе, в форматах ISO 8601 и RFC 2822, сколько времени прошло с того момента, а также тот же момент во всех четырёх единицах.
Выберите любой часовой пояс из списка, чтобы увидеть тот же момент там, например чтобы проверить, когда появилась запись в логе по времени коллеги из другой страны.
Как перевести дату в Unix timestamp
Откройте вкладку Дата в timestamp, выберите дату и время и укажите часовой пояс, к которому они относятся. Вы получите epoch-время в секундах и миллисекундах, а также запись ISO 8601 по UTC.
На той же панели показаны первая и последняя секунды этого дня, месяца и года в выбранном часовом поясе. Это удобно для запросов к базе данных вроде «все заказы за октябрь по нью-йоркскому времени», где нужны метки времени начала и конца периода.
Advertisement
Часовые пояса и летнее время
У Unix timestamp нет часового пояса: он всегда отсчитывается от полуночи UTC 1 января 1970 года. Один и тот же timestamp просто показывается как разное время на часах в разных местах, например 1700000000 выглядит как 22:13 в Лондоне и 03:43 следующего утра в Индии.
Часовые пояса важны при переводе даты в timestamp. Некоторое время на часах наступает дважды, когда часы переводят назад, а некоторое не наступает вовсе, когда их переводят вперёд. В ночь, когда в США часы переводят вперёд, времени 02:30 в Нью-Йорке не существует. Этот инструмент обрабатывает оба случая так же, как Python: несуществующее время сдвигается вперёд на величину разрыва, а для времени, которое наступает дважды, берётся первое вхождение.
Проблема 2038 года
Старые системы хранят Unix-время в знаковом 32-битном целом, максимальное значение которого 2147483647: 19 января 2038 года, 03:14:07 UTC. Секундой позже число переполняется и становится отрицательным, и такие системы читают дату как 13 декабря 1901 года.
Большинство современных операционных систем и языков используют 64-битное время и не затронуты, но встраиваемые устройства, старые форматы файлов, часть устаревшего кода и тип столбца TIMESTAMP в MySQL (который заканчивается на 2038-01-19 03:14:07 UTC) по-прежнему уязвимы. Конвертер показывает предупреждение для любой метки времени за пределами 32-битного диапазона, чтобы вы могли заметить значения, способные сломать старое ПО.
Advertisement
Как получить текущее Unix-время в коде
Любой язык и любая командная оболочка умеют читать и конвертировать Unix-время:
Math.floor(Date.now() / 1000) // секунды
Date.now() // миллисекунды
new Date(1700000000 * 1000).toISOString() // '2023-11-14T22:13:20.000Z'import time, datetime
int(time.time()) # секунды
datetime.datetime.fromtimestamp(1700000000, datetime.timezone.utc)
# 2023-11-14 22:13:20+00:00date +%s # текущее epoch-время в секундах
date -u -d @1700000000 # Linux (GNU date)
date -u -r 1700000000 # macOS (BSD date)-- PostgreSQL
SELECT extract(epoch FROM now());
SELECT to_timestamp(1700000000);
-- MySQL
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);time(); // PHP
date('c', 1700000000);
time.Now().Unix() // Go
Instant.now().getEpochSecond() // Java=(A1/86400)+DATE(1970,1,1) // epoch-секунды из A1 в дату UTC
=(B1-DATE(1970,1,1))*86400 // дата UTC из B1 в epoch-секундыПримечательные метки Unix-времени
0: 1 января 1970 года, 00:00:00 UTC, эпоха Unix.1000000000: 9 сентября 2001 года, 01:46:40 UTC, первый 10-значный timestamp.1234567890: 13 февраля 2009 года, 23:31:30 UTC.1700000000: 14 ноября 2023 года, 22:13:20 UTC.1800000000: 15 января 2027 года, 08:00:00 UTC.2000000000: 18 мая 2033 года, 03:33:20 UTC.2147483647: 19 января 2038 года, 03:14:07 UTC, предел знакового 32-битного значения.4294967295: 7 февраля 2106 года, 06:28:15 UTC, предел беззнакового 32-битного значения.
Advertisement
Другие инструменты для разработчиков
Другие бесплатные инструменты для разработчиков и системных администраторов, которые работают прямо в браузере: