Конвертер Unix-времени

RSS

Смотрите текущее Unix-время в реальном времени, переводите секунды или миллисекунды Unix-времени в понятную дату или дату — в метку времени.

Работает на 100% в вашем браузере. Ничего из вставленного не загружается на сервер и не сохраняется.

Текущее Unix-время

—

Timestamp → дата

Дата → timestamp

Как пользоваться конвертером Unix-времени

  1. Вставьте Unix timestamp. Конвертер сам определяет, указан он в секундах или в миллисекундах.
  2. Посмотрите дату в UTC, в вашем местном часовом поясе и в формате ISO 8601.
  3. Для обратного преобразования выберите дату и время и скопируйте полученный timestamp.

Преобразования выполняются в вашем браузере по часам и настройкам часового пояса вашего устройства; ничего не отправляется на сервер и не хранится там.

Что такое Unix timestamp?

Unix timestamp (также epoch time, Unix-время или время POSIX) — это количество секунд, прошедших с начала эпохи Unix: 1970-01-01T00:00:00Z, то есть с полуночи по UTC 1 января 1970 года. Даты до начала эпохи выражаются отрицательными числами.

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

1700000000      → 2023-11-14T22:13:20Z
0               → 1970-01-01T00:00:00Z
-86400          → 1969-12-31T00:00:00Z

Секунды или миллисекунды

Утилиты Unix, PHP, time.time() в Python и большинство баз данных используют секунды. Date.now() в JavaScript, System.currentTimeMillis() в Java и многие JSON API используют миллисекунды. Для современных дат значение в секундах состоит из 10 цифр, а в миллисекундах — из 13. Путаница между ними — самая распространённая ошибка с timestamp:

new Date(1700000000)          // Tue Jan 20 1970 (воспринято как мс!)
new Date(1700000000 * 1000)   // Tue Nov 14 2023

Високосные секунды не учитываются

Unix-время исходит из того, что в каждых сутках ровно 86 400 секунд. Когда в UTC добавляется високосная секунда, Unix-время её не считает, поэтому timestamp не равен истинному числу секунд СИ, прошедших с 1970 года. Почти для всех приложений это неважно, а арифметика с датами остаётся простой.

Частые ошибки

Проблема 2038 года

Системы, которые хранят timestamp как 32-битное целое со знаком, могут считать только до 2 147 483 647, то есть до 2038-01-19T03:14:07Z. Секундой позже значение переполняется и становится отрицательным числом, соответствующим дате в декабре 1901 года. Современные операционные системы и языки используют 64-битное время, но встроенные устройства, старые форматы файлов и столбцы баз данных, объявленные как 32-битные целые, по-прежнему в зоне риска. Для всего, что может хранить будущие даты, используйте 64-битные целые или встроенные типы даты/времени.

Незаметно подмешанное местное время

Разбор строки даты без часового пояса, например 2024-03-10 02:30, использует местный пояс компьютера и может давать разные значения timestamp на разных серверах или несуществующее время в момент перевода часов. Всегда указывайте смещение или Z.

ISO 8601

Для обмена в удобочитаемом виде стандартом служит ISO 8601 (и его интернет-профиль RFC 3339): 2023-11-14T22:13:20Z или 2023-11-14T23:13:20+01:00. Как и timestamp, строки ISO 8601 в UTC правильно сортируются как обычный текст.

Как получить текущий timestamp в коде

СредаСекунды с начала эпохи
Командная оболочка (Linux, macOS)date +%s
Pythonimport time; int(time.time())
JavaScriptMath.floor(Date.now() / 1000)
PHPtime()
MySQLSELECT UNIX_TIMESTAMP();
PostgreSQLSELECT EXTRACT(EPOCH FROM now());

Чтобы перевести timestamp обратно в дату в командной строке, используйте date -u -d @1700000000 в Linux (GNU date) или date -u -r 1700000000 в macOS.

Совет: В JWT значения exp, iat и nbf хранятся как Unix timestamp в секундах. Декодер JWT преобразует их за вас. Для упорядоченных по времени идентификаторов со встроенным timestamp в миллисекундах воспользуйтесь генератором UUID v7.

Часто задаваемые вопросы

Одинаков ли Unix timestamp во всех часовых поясах?

Да. Он отсчитывает секунды от фиксированного момента в UTC, поэтому в любой момент времени он везде одинаков. Отличается только его перевод в местное время.

Как отличить секунды от миллисекунд?

Посчитайте цифры. Для современных дат это 10 цифр в секундах и 13 в миллисекундах. «Дата» в январе 1970 года обычно означает, что значение в секундах прочитали как миллисекунды, а дата на десятки тысяч лет вперёд — об обратной ошибке.

Что произойдёт в 2038 году?

Сломается только программное обеспечение, которое хранит время в 32-битном целом со знаком. 64-битные значения timestamp не переполнятся ещё миллиарды лет.

Может ли Unix timestamp быть отрицательным?

Да. Отрицательные значения обозначают моменты до 1 января 1970 года, хотя некоторые старые системы и API их не принимают.

Обновлено

Комментарии

Оценок пока нет

Войдите, чтобы оценить этот инструмент.

Поделитесь советом, задайте вопрос или расскажите, как вам помог инструмент.

Комментариев пока нет. Расскажите первым, как всё прошло.

Скопировано в буфер обмена