Конвертер меток времени

Перевод между метками времени Unix и датами в обе стороны. Значения из 10 цифр (секунды) и 13 цифр (миллисекунды) распознаются автоматически, местный часовой пояс и UTC переключаются одним щелчком. Все вычисления идут локально в браузере, никакие данные никуда не отправляются.
Текущая метка времени (сек.)
мс

Часовой пояс
Метка времени

Дата и время

Примечания:
1. Поле метки времени определяет единицу по количеству цифр: 10 цифр читаются как секунды, 13 — как миллисекунды. Что именно решено, показано под полем, а если решение неверное, просто поправьте ввод.
2. Переключатель часового пояса вверху действует в обе стороны: при выбранном UTC то, что вы вписали в поле даты и времени, трактуется как UTC.
3. Отрицательные метки для моментов до 1970 года поддерживаются, как и ввод из 16 цифр (микросекунды) и 19 цифр (наносекунды).
4. Любую строку результата можно скопировать щелчком.
5. Текущая метка вверху обновляется раз в секунду и берётся из системных часов этого устройства: врут часы — врёт и значение здесь.

О метках времени Unix

Что на самом деле означает метка времени?

Метка времени Unix — это целое число: количество секунд, прошедших с момента 00:00:00 UTC 1 января 1970 года до нужного вам мгновения. В ней нет ни часового пояса, ни формата — это просто число, и именно это делает её полезной: любая машина на планете получает для одного и того же мгновения одно и то же число, поэтому запись в базу, ответ API или передача между системами не превращается в спор «московское время или токийское» и «год-месяц-день или день-месяц-год». Датой её рисуют в местном поясе только тогда, когда читать должен человек.

То есть у самой метки временинет часового пояса. Во фразе «перевести метку в московское время» перевод происходит на шаге отображения, а не на шаге хранения. Переключатель часового пояса вверху тоже меняет лишь то, как значения показываются и трактуются: одна и та же метка в обоих поясах — одно и то же мгновение.

Чем 10 цифр отличаются от 13?

10 цифр — сек., 13 цифр — мс, разница ровно в 1000 раз. На практике именно здесь ошибаются чаще всего: в Java System.currentTimeMillis()и в JavaScript Date.now() возвращают миллисекунды (13 цифр), тогда как Unix date +%s, в PHP time()и в MySQL UNIX_TIMESTAMP() возвращают секунды (10 цифр). Прочитайте миллисекунды как секунды — попадёте куда-то за 57000-й год; прочитайте секунды как миллисекунды — окажетесь в первых числах января 1970-го.

Отличить их просто — посчитайте цифры. В нынешнюю эпоху метка в секундах десятизначна, а в миллисекундах — тринадцатизначна, и в обозримом будущем это не изменится. Страница определяет единицу по количеству цифр и показывает своё решение; если ваши данные действительно в другой единице, достаточно поправить ввод. Изредка встречаются 16 цифр (микросекунды) и 19 цифр (наносекунды) — в основном в высокоточных интерфейсах Go и Python и в системах трассировки запросов; их страница тоже узнаёт.

Почему отсчёт идёт с 1970 года?

Эта точка отсчёта называется Epochи происходит из ранних реализаций Unix. Ничего особенного в 1970 году нет: тот, кто задавал стандарт, просто взял недавно прошедший круглый год — так 32-битными целыми того времени удобно накрывалось несколько десятилетий в обе стороны. По мере распространения Unix эту договорённость унаследовали C, Java, JavaScript, всевозможные базы данных и почти все сетевые протоколы.

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

Как получить метку времени в разных языках

В командной строке date +%s даёт секунды, аdate +%s%3N — миллисекунды (Linux; в macOS date не поддерживает %N, так что поставьте coreutils и берите gdate). В JavaScript это Date.now()(миллисекунды) и Math.floor(Date.now()/1000)(секунды). В Python — time.time(), он возвращает секунды с плавающей точкой. В Java — System.currentTimeMillis(). В PHP — time().

Со стороны баз данных: в MySQL — UNIX_TIMESTAMP() для чтения и FROM_UNIXTIME(ts) для обратного превращения в дату (учтите, что она рисуется в часовом поясе соединения); в PostgreSQL — EXTRACT(EPOCH FROM now()) и to_timestamp(ts). Это ищут довольно часто, хотя нужна тут одна строчка кода, а не веб-страница, — забирайте и пользуйтесь.

Частые вопросы

Время после конвертации не сходится — расхождение ровно на несколько часов, в чём дело?

Почти наверняка дело в часовом поясе. Москва — это UTC+3, Пекин — UTC+8, поэтому метка, отрисованная как UTC, выглядит на соответствующее число часов раньше местного времени. Щёлкните переключателем часового пояса вверху страницы: если значение сошлось, причина была именно в этом. Кроме того, функции баз данных (например, FROM_UNIXTIMEв MySQL) рисуют время в часовом поясе сеанса соединения, так что неверно настроенный пояс на сервере даёт ровно такое же расхождение.

Как понять, метка в секундах или в миллисекундах?

Посчитайте цифры: 10 — секунды, 13 — миллисекунды. Страница определяет это сама и показывает своё решение. Если результат приходится на первые числа января 1970-го, секунды прочитали как миллисекунды; если он улетел на десятки тысяч лет вперёд, миллисекунды прочитали как секунды.

Поддерживается ли время до 1970 года?

Да. Моменты до 1970 года записываются отрицательными метками — например, -86400 — это 31 декабря 1969 года. Просто вставьте такую метку, ничего дополнительно настраивать не нужно.

Насколько точна текущая метка времени?

Она берётся из системных часов этого устройства и к нашим серверам отношения не имеет (все инструменты сайта работают локально в браузере). Если часы устройства врут, показанное здесь значение врёт ровно настолько же. Нужна точность — сначала синхронизируйте системные часы.

Затрагивает ли эту страницу проблема 2038 года?

Нет. JavaScript хранит время в числе двойной точности, диапазон которого далеко выходит за пределы 32-битного целого, поэтому метки после 2038 года страница переводит без затруднений. Проблема касается систем, которые до сих пор хранят время в знаковом 32-битном целом.

Чем метка времени отличается от ISO 8601?

Метка времени — это число, а ISO 8601 — текстовый формат (вроде 2026-08-17T12:00:00.000Z). Первая компактна, с ней удобно считать и сравнивать; второй читается человеком напрямую и несёт часовой пояс с собой. В интерфейсах встречаются оба, и страница выводит обе формы сразу.

Отправляются ли данные куда-нибудь?

Нет. Для преобразования используются встроенные в браузер Date — вычисление целиком локальное, ни одного запроса не уходит. Отключите сеть после загрузки страницы, и инструмент продолжит работать. Подробности здесь:Политика конфиденциальности.

Какие ещё есть инструменты для разработчиков?

Да. Форматирование JSON покажет структуру данных, которые вернул интерфейс,Кодирование и декодирование Base64 разберётся с проблемами кодирования, а MD5 и SHA-256 нужны для расчёта хешей и проверки файлов.