Конвертер Unix timestamp
Вставьте число вроде 1700000000, чтобы увидеть дату, которую оно обозначает, или выберите дату, чтобы получить ее число. Не нужно указывать, секунды это, миллисекунды, микросекунды или наносекунды. Размер числа выдает это сам.
Unix-время сейчас, в секундах
Результаты появляются по мере ввода. Все преобразования выполняет ваш браузер: введённые значения нам не отправляются.
Число в дату
Дата в число
Поля даты и времени читаются в часовом поясе, выбранном выше. Текст, который заканчивается на Z или смещение вроде +02:00, сохраняет свой пояс.
Одно число, один и тот же момент везде
Спросите трех участников видеозвонка, который час, и можете услышать 9:00, 15:00 и 23:00. Все правы, но компьютеру, которому нужно упорядочить события, завершить сессию или подписать документ, от этого никакого толку.
Время Unix обходит это, считая секунды с полуночи UTC 1 января 1970 года, точки отсчета, которую называют эпохой. Счетчик дошел до 1 700 000 000 14 ноября 2023 года в 22:13:20 UTC. В Нью-Йорке было 17:13, в Токио уже наступило следующее утро, а каждая машина на Земле показывала одно и то же число.
У метки времени нет часового пояса и нет летнего времени. Пояса появляются, только когда число превращают в то, что читает человек. Поэтому эта страница спрашивает, какой пояс вам нужен, и показывает рядом UTC.
Секунды, миллисекунды и дальше
Исходный счет ведется в секундах. Многим системам нужен более мелкий шаг, поэтому они считают меньшие единицы от той же эпохи, и ничто в числе не говорит, какая перед вами единица. Приходится судить по длине:
| Единица | Цифр сегодня | Типичный источник |
|---|---|---|
| Секунды | 10 | утилиты Unix, PHP time(), даты в JWT, большинство API |
| Миллисекунды | 13 | JavaScript Date.now(), Java, Kafka |
| Микросекунды | 16 | PostgreSQL, Python time.time_ns() // 1000, журналы трассировки |
| Наносекунды | 19 | Go UnixNano(), InfluxDB, OpenTelemetry |
Конвертер делает так же: меньше 100 миллиардов он читает как секунды, меньше 100 триллионов как миллисекунды, затем микросекунды, затем наносекунды. Он сообщает, что предположил. Догадка ошибается только для дат рядом с 1970 годом, записанных в мелкой единице, и список «Единица» позволяет ее отменить.
Перепутанные единицы это классическая ошибка с метками времени. Прочитайте секунды как миллисекунды, и окажетесь в январе 1970 года. Прочитайте миллисекунды как секунды, и окажетесь на десятки тысяч лет в будущем.
Значения, на которые стоит взглянуть дважды
- Ноль или очень маленькое число
- 0 это сама эпоха. Это то, что лежит в пустом поле даты, а в поясах западнее UTC оно показывается как 31 декабря 1969 года. Значения в пределах месяца от эпохи тоже отмечаются, потому что обычно это длительности или поля, которые никто не заполнил.
- Отрицательные числа
- Они допустимы и считают назад: -86400 это 31 декабря 1969 года. Некоторые старые программы не умеют их хранить.
- 2 147 483 648 и больше
- Знаковое 32-битное целое заканчивается на 2 147 483 647, то есть 03:14:07 UTC 19 января 2038 года. Через секунду такой счетчик переполняется и уходит в декабрь 1901 года. У систем, которые все еще хранят время в 32 битах, есть время до этого момента, чтобы перейти на 64.
- -1
- Часто это то, что возвращает функция, которой не удалось прочитать дату.
Из даты обратно в число
Для обратного пути нужна еще одна деталь: пояс, в котором записана дата. «9 марта 2025 года, 14:30» это один момент в Чикаго и другой в Берлине, с разницей в шесть часов. Поля даты и времени читаются в выбранном вами поясе. Текст вроде 2025-03-09T14:30:00-05:00 или оканчивающийся на Z несет собственное смещение и читается как записан.
Летнее время порождает два странных случая, и инструмент сообщает об обоих:
- Время, которого не существует. Когда часы прыгают с 02:00 на 03:00, в этот день нет 02:30. Конвертер переносит значение за прыжок, как делает большинство программ, и сообщает об этом.
- Время, которое бывает дважды. Когда часы переводят назад с 02:00 на 01:00, 01:30 наступает два раза с разницей в час. Конвертер возвращает первый и дает вам также второй.
Время Unix не учитывает дополнительные секунды: каждый день считается ровно 86 400 секунд. Арифметика остается простой, но метка времени не является точным счетом прошедших секунд. С 1972 года расхождение составляет 27.
Правила поясов берутся из базы часовых поясов, встроенной в ваш браузер. Для прошлых дат они отражают правила, известные сегодня, а страна еще может изменить правила для будущих дат.
Частые вопросы
Что такое Unix timestamp?
Число секунд с 1 января 1970 года, 00:00:00 UTC, без учета дополнительных секунд. Оно называет один момент одним целым числом, которое не зависит от часового пояса, поэтому его легко хранить, сравнивать и вычитать.
Как понять, в секундах метка времени или в миллисекундах?
Посчитайте цифры. Для текущих дат у секунд 10 цифр, у миллисекунд 13. У микросекунд 16, у наносекунд 19. Если дата попадает в 1970 год или в какой-то далекий год, единицу прочитали неверно.
Почему дата показывается как 1 января 1970 года?
Сохраненное значение равно 0 или близко к нему. Либо поле так и не заполнили, либо неудачное преобразование вернуло 0, либо значение в секундах прочитали как миллисекунды. Западнее UTC тот же момент показывается как 31 декабря 1969 года.
Что за проблема 2038 года?
Программы, которые хранят время Unix в знаковом 32-битном целом, могут досчитать до 2 147 483 647, то есть до 03:14:07 UTC 19 января 2038 года. Следующая секунда вызывает переполнение и читается как дата в декабре 1901 года. Решение: хранить время в 64 битах.
Есть ли у Unix timestamp часовой пояс?
Нет. Он считает секунды от момента, определенного в UTC, поэтому одно и то же число верно везде. Часовой пояс применяется, только когда число показывают как календарную дату и время на часах.
Как получить текущее время Unix в коде?
В командной оболочке date +%s. В JavaScript Math.floor(Date.now() / 1000). В Python int(time.time()). В PHP time(). В SQL UNIX_TIMESTAMP() в MySQL и EXTRACT(EPOCH FROM now()) в PostgreSQL.