Время/числа

Unix Timestamp ↔ Дата

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


                    

Unix time (epoch time) is the number of seconds elapsed since January 1, 1970, 00:00:00 UTC. It's the most common way to store time in databases, APIs, and logs, since it's just a single integer with no tie to a specific timezone or date format.

How to use it

Common uses

Things to keep in mind

Mixing up seconds and milliseconds is the most common mistake: JavaScript's Date.now() returns milliseconds, while most Unix APIs use seconds — a factor of 1000 off.

Unix time itself has no timezone — it's always UTC; a timezone is only applied when displaying the date to a person.

Статья об этом инструменте: 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.

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

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