Преобразование Unix-метки в дату и даты в Unix-метку
Опубликовано · Обновлено 3 мин чтения
Unix-метка это число, отсчитывающее время, прошедшее с 1 января 1970 года, полночь, по всемирному времени. Она встречается в базах данных, журналах программ и интерфейсах сайтов. Два вопроса определяют получаемую дату: единица числа и часовой пояс, в котором вы читаете результат.
Эталонное значение
Конвертировать Unix-метку выдаёт три прочтения одного и того же момента. Для 1700000000 при браузере, настроенном на парижское время:
| Прочтение | Результат |
|---|---|
| Дата UTC | Tue, 14 Nov 2023 22:13:20 GMT |
| Местная дата | 14 ноября 2023 года в 23:13:20 UTC+1 |
| ISO | 2023-11-14T22:13:20.000Z |
Местное время следует часовому поясу браузера: зимой в Париже на час больше. Одна и та же метка это один момент, прочитанный в двух часовых поясах.
Единица определяется по числу цифр
Настройка по умолчанию определяет единицу по длине числа. Три следующих значения обозначают один и тот же момент в пределах точности.
| Число | Цифры | Определённая единица | Полученный момент |
|---|---|---|---|
| 1700000000 | 10 | Секунды | 14 ноя 2023, 22:13:20 UTC |
| 1700000000000 | 13 | Миллисекунды | 14 ноя 2023, 22:13:20 UTC |
| 1700000000123456 | 16 | Микросекунды | 14 ноя 2023, 22:13:20.123 UTC |
Правило: до 11 цифр секунды; от 12 до 14 миллисекунды; 15 и 16 микросекунды. Настройка «миллисекунды» принудительно задаёт эту единицу.
Ловушка правила
Поскольку единица выводится из длины, неоднозначное значение читается единственным способом: 10000000000 (11 цифр) даёт 20 ноября 2286 года, а 100000000000 (12 цифр) 3 марта 1973 года. Метка в миллисекундах до марта 1973 года содержит 11 цифр или меньше и будет прочитана как секунды: тогда принудительно задайте настройку «миллисекунды».
Значения до 1970 года и предел 2038 года
Отрицательное число обозначает момент до 1970 года: −1 даёт 31 декабря 1969 года в 23:59:59 UTC, а 0 даёт 1 января 1970 года в полночь.
Число 2147483647 наибольшее, которое способно вместить 32-битное знаковое целое: оно даёт 19 января 2038 года в 03:14:07 UTC. Следующее число, 2147483648, даёт 03:14:08. Инструмент продолжает без ограничений, но система, хранящая время в 32 битах, не может: это «ошибка 2038 года».
Преобразование даты в метку
Введите дату вместо числа: инструмент выдаст метку в секундах и в миллисекундах.
| Ввод | Метка в секундах | Прочтение |
|---|---|---|
| 2026-01-01 | 1767225600 | Полночь по всемирному времени, часовой пояс не указан |
| 2026-01-01T10:30:00+01:00 | 1767259800 | 10:30 в Париже, то есть 09:30 по всемирному времени |
| 2024-02-29 | 1709164800 | Високосный год принят |
Дата без часового пояса читается по всемирному времени, а не по местному: инструмент напоминает об этом в результате. Несуществующая дата, например 30 февраля 2026 года, отвергается с сообщением.
Частые ошибки
- Чтение миллисекунд как секунд: дата оказывается на тысячи лет дальше.
- Забытый часовой пояс: дата, прочитанная как местная, а затем отправленная как всемирная, сдвигается на час или больше.
- Запись даты без часового пояса с мыслью о местном времени, тогда как её прочитают по всемирному.
Чтобы посчитать дни между двумя датами, см. Подсчёт дней между двумя датами.
Для каких случаев
Журнал программы, база данных, ответ онлайн-службы или экспортированный файл: число трудно читать, а дата читается сразу.
Проверка преобразования
- Перечитайте строку UTC, которая не зависит от вашего устройства.
- Проверьте единицу, указанную в первой строке результата.
- Преобразуйте полученную дату обратно: должно вернуться исходное число.
Часто задаваемые вопросы
- Что такое Unix-метка?
- Число секунд, прошедших с 1 января 1970 года, полночь, по всемирному времени.
- Как узнать, в секундах число или в миллисекундах?
- Инструмент выводит это из числа цифр: до 11 цифр секунды; от 12 до 14 миллисекунды; 15 и 16 микросекунды.
- Что произойдёт в 2038 году?
- Число 2147483647, наибольшее 32-битное знаковое целое, соответствует 19 января 2038 года. Система, хранящая время в 32 битах, не может идти дальше.
- Какой часовой пояс используется для даты без пояса?
- Всемирное время, а не местное. Инструмент напоминает об этом в результате.
