Как конвертировать Unix-метки времени в читаемые даты
Быстрый ответ
Unix timestamp = секунды (или миллисекунды) с 1970-01-01 00:00:00 UTC. Конвертируйте в дату через new Date(timestamp * 1000) в JavaScript (секунды) или new Date(timestamp) (миллисекунды). Используйте наш Timestamp Converter.
Введение
Unix timestamp (также epoch time или POSIX time) — количество секунд с 1970-01-01 00:00:00 UTC (Unix epoch), исключая leap seconds. Это lingua franca времени в computing, так как это одиночный integer, timezone-independent и тривиально сортируемый. Большинство систем используют секунды; JavaScript и многие базы данных — миллисекунды.
Шаг за шагом
-
Понять секунды и миллисекунды
Большинство серверных систем и APIs используют секунды (10-значные отметки времени до 2286). Дата в JavaScript и Instant в Java используют миллисекунды (13 цифр). Всегда проверяйте, какую единицу измерения ожидает API — их смешивание сдвигает дату в 1000 раз (на ~31 год).
-
Преобразование отметки времени в читаемую дату
Вставьте временную метку в конвертер временных меток. Он определяет секунды и миллисекунды по длине (10 или 13 цифр) и отображает дату в формате UTC и ваш местный часовой пояс. В коде: new Date(1700000000 * 1000).toISOString() возвращает '2023-11-14T22:13:20.000Z'.
-
Преобразование даты в метку времени
Введите дату и время в конвертер; он возвращает метку времени Unix. В коде: Math.floor(new Date('2026-08-28T12:00:00Z').getTime() / 1000) возвращает секунды эпохи. Всегда указывайте часовой пояс (Z или смещение), чтобы избежать неоднозначности местного времени.
-
Правильно обрабатывайте часовые пояса
Временные метки Unix всегда указаны в формате UTC — у них нет часового пояса. Преобразование в локальное отображение только на уровне представления. Никогда не сохраняйте местное время как временную метку; сохраните UTC и преобразуйте на дисплее. Используйте имена часовых поясов IANA (Америка/Нью-Йорк) с Intl.DateTimeFormat для правильной обработки летнего времени.
-
Рассчитать разницу между датами
Вычтите две временные метки, чтобы получить разницу в секундах (или миллисекундах). Разделите на 60 для минут, 3600 для часов, 86400 для дней. Используйте наш инструмент «Разница в датах» для определения диапазона, удобного для человека, или калькулятор возраста для определения возраста на основе даты рождения.
Примеры
Эпоха Unix
Вход: 0 (seconds)
Выход: 1970-01-01 00:00:00 UTC
Через миллиард секунд после эпохи
Вход: 1000000000 (seconds)
Выход: 2001-09-09 01:46:40 UTC
Начало 2026 года по UTC
Вход: 2026-01-01T00:00:00Z
Выход: 1767225600 (секунды) / 1767225600000 (миллисекунды)
Разница между двумя датами
Вход: 1767225600 - 1700000000
Выход: 67225600 seconds = 778.08 days ≥2 years 31 days
Распространенные проблемы
- Путаница между секундами и миллисекундами: 10-значная временная метка, читаемая в миллисекундах, дает дату в 1970 году; 13-значная временная метка, считываемая как секунды, переполняет 32-битное целое число. Определите единицу измерения по количеству цифр или задокументируйте ее явно в файле API.
- Сохранение местного времени в виде отметки времени: отметки времени имеют формат UTC. Если вы вычислите Date.now() в браузере, для которого установлено значение UTC-5, и обработаете результат как локальный, переходы на летнее время будут сдвигать ваши данные на час два раза в год.
- 32-битное переполнение 19 января 2038 г., 03:14:07 UTC (2038 г.): системы, использующие подписанную 32-битную временную метку секунд, не могут представлять даты после этой точки. В новых системах используйте 64-битные или миллисекундные метки времени.
- Дополнительные секунды игнорируются: временные метки Unix пропускают дополнительные секунды, поэтому разница между двумя временными метками не равна количеству прошедших секунд SI. Большинство приложений могут игнорировать это; высокоточная астрономия и финансы не могут.
Советы
- Всегда храните и передайте временные метки в формате UTC; конвертировать в местное время только на уровне отображения, используя Intl.DateTimeFormat с часовым поясом IANA.
- Используйте строки ISO 8601 (например, 2026-08-28T12:00:00Z) для удобочитаемого APIs и временных меток для хранения. Строки ISO явно содержат часовой пояс и являются однозначными.
- При сравнении меток времени используйте одни и те же единицы измерения (секунды или миллисекунды) с обеих сторон — несовпадение единиц измерения является одной из наиболее распространенных ошибок даты.
- Используйте наш конвертер временных меток для проверки правильности ответов API во время отладки — он показывает как UTC, так и местное время, поэтому вы можете сразу обнаружить ошибки часового пояса.