Unix-timestamp: что это и как конвертировать
Практическое руководство по Unix-временным меткам — что такое epoch-время, секунды vs миллисекунды, часовые пояса и способы конвертации.
Откройте любую схему базы данных — и почти наверняка увидите колонку created_at со значением вроде 1700000000. Это Unix-timestamp. Если вам хоть раз приходилось вручную выяснять, какой это день, вы знаете, как быстро надоедает переводить числа в даты без нормального инструмента.
Конвертер временных меток работает в обе стороны: вставьте число — получите читаемую дату, выберите дату — получите epoch-значение.
Что такое Unix-timestamp
1 января 1970 года, 00:00:00 UTC называется Unix epoch — точкой отсчёта. Unix-timestamp — это количество секунд, прошедших с этого момента. Сейчас это примерно 1 716 000 000. Примерно в 2038 году 32-битные системы, хранящие timestamp как знаковое целое, переполнятся — это проблема 2038 года, и некоторые устаревшие системы до сих пор с ней борются.
Формат не зависит от часовых поясов. 1700000000 — это одна и та же точка во времени, где бы вы ни находились. Именно поэтому он стал стандартом для хранения времени в базах данных и API.
Секунды или миллисекунды
Два формата постоянно путают:
- секунды (10 цифр):
1700000000 - миллисекунды (13 цифр):
1700000000000
Date.now() в JavaScript возвращает миллисекунды. time.time() в Python — секунды (как float). Базы данных — по-разному. Из-за этого несоответствия возникают баги: конвертируешь timestamp и получаешь дату из 1970-го, потому что миллисекунды были поняты как секунды, или дату из 57 000-го — потому что наоборот.
Конвертер временных меток определяет это автоматически: всё, что больше 10 миллиардов, считается миллисекундами. Это перекрывает все даты с 1970 по 2286 год — практически все реальные случаи.
Часовые пояса
Unix-timestamp не привязан к часовому поясу. Часовые пояса появляются при переводе числа в читаемый формат.
Инструмент показывает три варианта:
- ISO 8601 (
2024-11-14T22:13:20.000Z) — всегда UTC, буква Z в конце явно указывает на это - UTC — тот же момент в более читаемом виде
- Локальное — конвертация в часовой пояс вашего браузера
Если на вашей машине UTC+3, а UTC-время 19:00 — локальное покажет 22:00. Всё работает правильно, просто отображается смещение вашего часового пояса.
Отображение «относительного времени»
Надпись «3 года назад» рядом с 1560000000 часто полезнее, чем голая дата — особенно когда просматриваешь логи или разбираешь баги. Относительное время показывает, насколько timestamp отстоит от текущего момента.
Типичные сценарии
Лог-файлы почти всегда используют Unix-timestamp ради компактности. Вставил значение — получил полную дату, без арифметики в уме.
Ответы API от Stripe, GitHub или AWS содержат Unix-timestamp в JSON-полях. При отладке просроченного токена или проблем с тайминогом вебхука конвертация timestamp — как правило, первый шаг.
Запросы к базе данных нередко требуют фильтрации по временному диапазону в epoch-значениях. Выберите начало и конец в конвертере, скопируйте числа и вставьте в условие WHERE.
Вставьте любой timestamp в Конвертер временных меток — и получите полную разбивку даты мгновенно, без регистрации и отправки данных куда-либо.