Время/числа

Unix Timestamp ↔ Дата

Конвертация Unix-времени в дату и обратно, с поддержкой произвольных часовых поясов (IANA).


                    

Unix-время (epoch) — это количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC. Это самый распространённый способ хранить время в базах данных, API и логах, ведь это просто одно целое число без привязки к конкретному часовому поясу или формату даты.

Как пользоваться

Типичные сценарии

Что стоит помнить

Путаница секунд и миллисекунд — самая частая ошибка: JavaScript Date.now() возвращает миллисекунды, а большинство Unix API — секунды, разница в 1000 раз.

Unix-время само по себе не имеет часового пояса — это всегда UTC; часовой пояс применяется только при отображении даты человеку.

Статья об этом инструменте: Unix-время: почему компьютеры считают время с 1970 года

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

Что такое Unix timestamp?

Это количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC (эпоха Unix). Это число не привязано ни к какому часовому поясу — сам пояс применяется только при показе даты человеку.

В чём разница между секундами и миллисекундами?

JavaScript и некоторые API (напр. Date.now()) отдают timestamp в миллисекундах, тогда как классическое Unix-время — в секундах. Перепутанная единица даёт дату либо в 1970 году, либо где-то в далёком будущем — выберите правильную единицу в поле «Единицы».

Что такое проблема 2038 года?

На системах, где timestamp хранится как 32-битное целое со знаком, счётчик секунд переполнится 19 января 2038 года. Современные 64-битные системы этой проблемы не имеют.

Учитывает ли Unix-время високосные секунды?

Нет, каждые сутки в Unix-времени всегда равны ровно 86400 секундам, високосные секунды игнорируются. Системы, которым нужна точная синхронизация с астрономическим UTC, обрабатывают високосные секунды отдельным механизмом вне стандартного Unix timestamp.

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

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

Статьи: Время/числа

Cron-выражения: как расшифровать расписание запуска задач

Как расшифровать выражение вроде */15 * * * * и понять, когда именно запустится задача.

Системы счисления: зачем нужны двоичная, восьмеричная и шестнадцатеричная

Почему цвет #FF5733 в CSS записан шестнадцатеричными цифрами, а не десятичными.

Побитовые операции: как AND, OR и XOR работают на уровне битов

Чем побитовый AND отличается от логического, и зачем вообще оперировать отдельными битами числа.

Разница между датами: почему подсчёт дней сложнее, чем кажется

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

Расчёт возраста: почему это не простое вычитание годов

Почему простое вычитание годов рождения может дать возраст на единицу больше реального.

Часовые пояса: почему UTC — это не то же самое, что GMT

Почему UTC не меняется дважды в год, а время в Лондоне (GMT/BST) — меняется.

Расчёт длительности: как правильно суммировать часы, минуты и секунды

Почему при сложении минут и секунд нужно «переносить» остаток в следующий разряд, как при десятичном сложении.

ISO 8601 Duration: как записать длительность в стандартном формате

Почему запись PT1H30M означает «1 час 30 минут», а не «1 минута 30 часов».

Номер недели: почему в разных странах недели считают по-разному

Почему 1 января иногда относится к 52-й или 53-й неделе предыдущего года по стандарту ISO 8601.

Римские цифры: как устроена система без нуля и разрядов

Почему IV означает 4, а не 6, и как правило вычитания работает в римских цифрах.

IEEE 754: почему 0.1 + 0.2 не равно 0.3 в коде

Почему почти в каждом языке программирования 0.1 + 0.2 выводит 0.30000000000000004.

Число прописью: зачем превращать цифры в слова

Почему в банковских документах сумму пишут и цифрами, и словами одновременно.