Как перевести Unix timestamp в дату и время онлайн. Конвертер Unix времени для разработчиков. Что такое Epoch time, проблема 2038 года, timestamp в секундах и миллисекундах.
Введение
1752249600 — глядя на это число, невозможно сказать, что это 11 июля 2025 года, полдень по Гринвичу. Unix timestamp — это универсальный способ хранения времени, понятный машинам, но нечитаемый для человека. Серверы, базы данных, API, логи — все они оперируют временем как количеством секунд, прошедших с полуночи 1 января 1970 года. Конвертер Unix времени переводит эти числа в привычные дату и время, и наоборот. В этой статье разберём, что такое Unix timestamp, как с ним работать и почему его удобство оборачивается проблемами вроде бага 2038 года.
Что такое Unix timestamp и откуда он взялся
Unix timestamp, или Epoch time — это количество секунд, прошедших с 00:00:00 1 января 1970 года по UTC. Эта дата называется Unix Epoch и была выбрана разработчиками операционной системы Unix как условное начало отсчёта. Почему именно 1970 год? Потому что система разрабатывалась в конце 1960-х, а 1 января 1970 года было удобным круглым началом десятилетия. Timestamp не зависит от часовых поясов, перехода на летнее время, високосных секунд и прочих календарных сложностей. Сервер в Москве и сервер в Нью-Йорке хранят одно и то же число для одного и того же момента. Это делает timestamp идеальным форматом для хранения и передачи времени между системами.
Timestamp хранится как целое число, обычно 32-битное или 64-битное. 32-битный знаковый timestamp вмещает диапазон от 1901 до 2038 года. 64-битный — от примерно 292 миллиардов лет до нашей эры до 292 миллиардов лет нашей эры, что перекрывает все практические потребности. Важный нюанс: timestamp бывает в секундах и в миллисекундах. JavaScript использует миллисекунды, большинство баз данных и API — секунды. Если вы видите число длиной 10 знаков — это секунды, 13 знаков — миллисекунды. Перепутав, вы получите дату, отстоящую от реальной на 47 лет.
Проблема 2038 года
32-битный знаковый целочисленный timestamp переполнится 19 января 2038 года в 03:14:07 по UTC. В этот момент значение достигнет максимального 2 147 483 647, следующий отсчёт приведёт к переполнению и сбросу на отрицательное значение, что соответствует 13 декабря 1901 года. Это называют проблемой 2038 года — по аналогии с проблемой 2000 года. Все 32-битные системы, которые зависят от времени, могут столкнуться со сбоями: банкоматы, GPS-навигаторы, старые серверы, встраиваемые системы в автомобилях и промышленном оборудовании. Решение — переход на 64-битный timestamp, который переполнится через 292 миллиарда лет. Большинство современных операционных систем и программ уже перешли на 64 бита, но легаси-оборудование остаётся под угрозой. Конвертер Unix времени среди инструментов Vibes корректно обрабатывает 64-битные значения и предупредит о выходе за пределы 32-битного диапазона.
Как работает конвертер Unix времени
Конвертер принимает на вход целое число — Unix timestamp — и возвращает дату и время в читаемом формате. Алгоритм использует встроенные функции языков программирования для работы с датами. В JavaScript это new Date(timestamp * 1000) для секундного timestamp. Результат обычно выводится в UTC и в локальном времени пользователя, определяемом по настройкам браузера. Разница может составлять несколько часов в зависимости от часового пояса. Обратная конвертация принимает дату и время, введённые пользователем, и вычисляет соответствующий timestamp. Здесь важно правильно указать часовой пояс: ввели дату в московском времени, конвертер должен знать, что нужно вычесть смещение UTC+3, чтобы получить корректный timestamp по Гринвичу. Хороший конвертер автоматически использует локальный часовой пояс браузера и даёт возможность переключиться на другой.
Где применяется Unix timestamp
Первый сценарий — логи сервера. Каждая запись в логе имеет timestamp, и разработчик, видя 1752249600, должен понять, когда это произошло. Конвертер переводит число в дату за секунду. Второй — базы данных. Поле created_at хранит timestamp, и при выгрузке данных нужно представить его в читаемом виде для отчёта. Третий — API. Ответ сервера содержит поле expires_in: 1752249600 — когда истекает токен? Конвертер показывает: 11 июля 2025 года, пора обновлять. Четвёртый — дебаггинг JWT-токенов. Внутри токена есть поле exp — время истечения в timestamp. Пятый — настройка кэширования. Заголовок Expires может содержать timestamp, и конвертер помогает понять, на какое время настроен кэш.
Unix timestamp в миллисекундах: как не перепутать
JavaScript — главный источник путаницы. Date.now() возвращает миллисекунды: 13-значное число. Большинство серверных API ожидают секунды: 10-значное. При передаче времени из браузера на сервер нужно делить на 1000 и округлять. При получении с сервера — умножать. Конвертер Unix времени должен принимать оба формата и автоматически определять, что перед ним. Если в поле вставлено 10-значное число, это секунды. Если 13-значное — миллисекунды. Инструмент на Vibes определяет формат автоматически и выводит корректную дату. Это спасает от ошибок, когда копируешь timestamp из консоли браузера и вставляешь в конвертер, забыв разделить на 1000.
Часто задаваемые вопросы
Почему timestamp считается от 1970 года, а не от другой даты? Так сложилось исторически. Разработчики Unix в Bell Labs выбрали 1 января 1970 года как удобную точку отсчёта. Система разрабатывалась в конце 1960-х, и 1970 год был ближайшим круглым началом десятилетия. Дата прижилась и стала стандартом де-факто.
Как timestamp учитывает високосные секунды? Никак. Unix timestamp игнорирует високосные секунды и считает, что каждая минута длится ровно 60 секунд. Когда Международная служба вращения Земли добавляет високосную секунду, системы Unix либо замирают на секунду, либо сглаживают расхождение через NTP.
Что будет, если timestamp отрицательный? Отрицательный timestamp соответствует датам до 1 января 1970 года. -1 — это 31 декабря 1969 года, 23:59:59. Конвертер корректно обрабатывает отрицательные значения. 32-битный минимальный timestamp — -2 147 483 648, что соответствует 13 декабря 1901 года.
Как узнать текущий Unix timestamp без конвертера? В консоли браузера выполните Math.floor(Date.now() / 1000). В командной строке Linux или macOS — date +%s. В Python — import time; int(time.time()). Эти способы дают текущий timestamp в секундах.
Почему 13-значный timestamp — это миллисекунды? Потому что количество секунд с 1970 года — это 10-значное число до 2033 года. Умножив на 1000, получаем 13 знаков. После 2033 года секундный timestamp станет 11-значным, и разница сократится. Но до тех пор длина числа — надёжный признак формата.
Можно ли использовать Unix timestamp в Excel? Да. Формула =A1/86400+DATE(1970;1;1) переведёт timestamp из ячейки A1 в читаемую дату. 86400 — это количество секунд в сутках. Для миллисекундного timestamp делите на 86400000.