Unix timestamp: перевод в дату и обратно
Что такое Unix timestamp
Unix timestamp — число секунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Момент записывается одним числом, без часового пояса и формата даты, поэтому timestamp удобно хранить в базе, передавать в API и сравнивать: больше число — позже момент. Даты до 1970 года записываются отрицательными числами.
Date.now() // 1793000000000 — миллисекунды
Math.floor(Date.now() / 1000) // 1793000000 — секундыОдно и то же число показывает разное время в разных поясах: 1793000000 — это 07:33:20 по UTC и 10:33:20 по Москве. Поэтому при переводе в дату важен выбранный часовой пояс.
Как пользоваться
Вставьте число или дату — результат обновится сразу. Единицы числа определяются по длине: 10 цифр — секунды, 13 — миллисекунды, 16 — микросекунды, 19 — наносекунды. Если догадка неверна, выберите единицы в списке.
Дата с поясом (2026-10-26T09:30:00Z, +03:00) однозначна. Дата без пояса (2026-10-26 09:30, 26.10.2026 09:30) читается в выбранном часовом поясе — инструмент об этом предупреждает. Каждое значение в таблице копируется отдельной кнопкой. Выбор пояса запоминается в браузере.
Почему сутки не всегда равны 24 часам?
Вычисляем…
| Unix, секунды | ||
|---|---|---|
| Unix, миллисекунды | ||
| ISO 8601, UTC | ||
| В выбранном поясе | ||
| ISO 8601 со смещением | ||
| По вашему времени | ||
| Заголовок HTTP | ||
| День недели | ||
| Относительно сейчас |
Прибавить или отнять
В коде
Код
Разница между датами
Введите два значения — timestamp или даты.
Для перевода включите JavaScript. Пример: 1793000000 секунд — 26 октября 2026 года, 07:33:20 UTC.
Секунды или миллисекунды
Самая частая ошибка — перепутать единицы. JavaScript отдаёт миллисекунды, большинство серверных языков и баз данных — секунды. Если подставить секунды туда, где ждут миллисекунды, получится январь 1970 года; наоборот — дата в далёком будущем.
- Миллисекунды:
Date.now()иgetTime()в JavaScript,System.currentTimeMillis()в Java. - Секунды:
time()в PHP,time.time()в Python (с дробной частью),date +%sв Linux,UNIX_TIMESTAMP()в MySQL, поляexpиiatв токенах JWT. - Микро- и наносекунды:
time.time_ns()в Python,time.Now().UnixNano()в Go, метки в журналах и системах трассировки.
Проблема 2038 года
Старые системы хранят timestamp в 32-битном знаковом целом. Его предел — 2147483647, то есть 19 января 2038 года, 03:14:07 по UTC. Секундой позже число переполняется и становится отрицательным — дата превращается в декабрь 1901 года. Современные системы используют 64-битные числа, но в старых базах, встроенных устройствах и форматах файлов ограничение ещё встречается. Инструмент предупреждает, если значение выходит за этот предел.
Вопросы и ответы
Зависит ли timestamp от часового пояса?
Нет: число одно для всего мира и всегда отсчитывается от полуночи 1 января 1970 года по UTC. Часовой пояс нужен только при переводе числа в дату и времени в число: «09:30» в Москве и в Берлине — разные моменты и разные timestamp.
Учитывает ли timestamp високосные секунды?
Нет. В Unix-времени в каждых сутках ровно 86 400 секунд; добавочная секунда, которую иногда вставляют в UTC, не получает отдельного значения. Для расчётов в приложениях это обычно незаметно.
Как получить дату из timestamp в JavaScript?
Передайте миллисекунды в new Date(): для секунд умножьте на 1000 — new Date(1793000000 * 1000). Метод toISOString() вернёт дату в UTC, а toLocaleString('ru-RU', { timeZone: 'Europe/Moscow' }) — в нужном поясе.
Связанные материалы
Объект Date подробно описан в справочнике JavaScript. Время в токенах авторизации показывает «Декодер JWT», расписания задач расшифровывает «Расписание cron».