Конвертер времени: Unix, ISO 8601, Java ISO_DATE_TIME

Перевод Unix-времени и дат в ISO 8601, RFC 3339, константы Java DateTimeFormatter, HTTP-даты и обратно, часовые пояса и свой шаблон.

Данные обрабатываются в браузере и никуда не отправляются

Единицы числа
Шаблон

Ввод

Время
Часовой пояс
Показать ещё в поясах
Свой шаблон формата (необязательно)

Результат

Здесь появится результат

Введите данные слева - результат появится сразу

Как пользоваться

Введите время в любом виде - результат появляется сразу: Unix-число (секунды, миллисекунды, микро- или наносекунды определяются по величине), дату ISO 8601 (2024-01-31T13:00:00+03:00), SQL-запись (2024-01-31 13:00:00), русскую запись (31.01.2024 13:00), HTTP-дату (Wed, 31 Jan 2024 10:00:00 GMT) или слово now. Ниже появятся все форматы сразу: Unix, ISO 8601, константы Java DateTimeFormatter (ISO_DATE_TIME, ISO_OFFSET_DATE_TIME, ISO_INSTANT и остальные), RFC 3339, RFC 2822, HTTP-дата, SQL, Excel, FILETIME - у каждого есть кнопка копирования.

Укажите часовой пояс (UTC, Europe/Moscow, смещение +03:00 или local): в нём читается время без смещения и в нём выводятся все форматы. В блоке «В других часовых поясах» то же мгновение показано в нескольких поясах сразу. Можно задать свой шаблон: в стиле Java (yyyy-MM-dd'T'HH:mm:ss.SSSXXX), он же подходит для .NET, или strftime (%Y-%m-%d %H:%M:%S). Внизу - готовые строки кода для JavaScript, Python, Java, C#, PHP, Go, PostgreSQL и MySQL.

Частые ошибки

Вот что чаще всего путают со временем в интеграциях:

Секунды или миллисекунды

Unix-время в секундах (1706695200) и в миллисекундах (1706695200000) отличается на три нуля. JavaScript и Java отдают миллисекунды, PHP, Python и JWT - секунды. Ошибка превращает дату в 1970 год или в далёкое будущее. Инструмент определяет единицы по величине числа и сообщает об этом.

Время без часового пояса

2024-01-31T13:00:00 без Z и смещения не определяет момент: в Москве и Лондоне это разные мгновения. Передавайте время с Z или смещением, а если пояса нет, договоритесь, в каком поясе его читать.

Z, +00:00 и GMT - почти одно и то же

Z (Zulu) и +00:00 означают UTC. GMT в HTTP-заголовках - тоже UTC. Но «Europe/London» летом - не UTC, а +01:00. Название пояса, а не смещение, нужно, чтобы учесть переход на летнее время.

Переход на летнее и зимнее время

В день перевода часов некоторое местное время не существует (час «пропадает» весной), а некоторое бывает дважды (осенью). Поэтому для хранения и обмена используют UTC, а местное время считают только при показе.

Ключевые слова ISO_DATE_TIME в Java

ISO_INSTANT всегда печатает UTC с буквой Z, ISO_OFFSET_DATE_TIME - со смещением, ISO_ZONED_DATE_TIME и ISO_DATE_TIME добавляют название пояса в квадратных скобках, а ISO_LOCAL_DATE_TIME не содержит пояса вовсе. Выберите ту, что понимает принимающая сторона.

Доли секунды

Java печатает доли секунды без хвостовых нулей (ISO_LOCAL_TIME) или группами по три цифры (Instant), JavaScript всегда три цифры, а базы данных хранят микросекунды. Разное количество знаков - частая причина несовпадения подписей и строковых сравнений.

Год 2038 и 32-битное время

Unix-время в 32-битном знаковом целом переполнится 19 января 2038 года. В новых системах время хранят в 64 битах, но старые базы, встроенные устройства и протоколы с 32-битными полями этой проблемы ещё не избежали.

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

Отправляются ли мои данные на сервер?

Нет - 100%. Сайт целиком статический, у него нет серверной части. Все вычисления выполняются в вашем браузере, а часовые пояса берутся из его встроенной базы.

Что такое Unix-время и от какой даты оно считается?

Это количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC (эпоха Unix). Високосные секунды не учитываются. Такое число одинаково во всех часовых поясах, поэтому его удобно хранить и передавать.

Как отличить секунды от миллисекунд?

По количеству цифр: 10 цифр - секунды (до 2286 года), 13 - миллисекунды, 16 - микросекунды, 19 - наносекунды. Инструмент выбирает единицы автоматически, а при необходимости можно указать их вручную.

Чем отличается ISO 8601 от RFC 3339?

RFC 3339 - строгий профиль ISO 8601 для интернета: обязательны дата и время, обязательно смещение или Z, разделитель T. Всё, что соответствует RFC 3339, является корректным ISO 8601, но не наоборот (например, недельные даты в RFC 3339 не допускаются).

Какую константу Java выбрать: ISO_DATE_TIME, ISO_OFFSET_DATE_TIME или ISO_INSTANT?

Для обмена между системами обычно подходят ISO_OFFSET_DATE_TIME (со смещением) или ISO_INSTANT (всегда UTC с Z). ISO_DATE_TIME и ISO_ZONED_DATE_TIME добавляют название пояса в скобках - так не всякий парсер читает. ISO_LOCAL_DATE_TIME без пояса годится только если пояс известен из контекста.

Что значит «Европа/Москва» и почему не просто +03:00?

Название пояса (IANA, например Europe/Moscow) содержит историю и правила перехода на летнее время, а смещение +03:00 - лишь значение в один момент. Для прошедших и будущих дат нужно название пояса, иначе при переводе часов время «поедет».

Что делает шаблон yyyy-MM-dd'T'HH:mm:ss.SSSXXX?

Это формат Java DateTimeFormatter: yyyy - год, MM - месяц, dd - день, HH - часы 0-23, mm - минуты, ss - секунды, SSS - миллисекунды, XXX - смещение вида +03:00, а текст в одинарных кавычках выводится как есть. Подобные шаблоны есть в .NET; в Python и C используют %-коды (strftime).

Как узнать время в другом часовом поясе?

Укажите нужные пояса в поле «Показать ещё в поясах» через запятую - в блоке «В других часовых поясах» то же мгновение появится в каждом. Сам пояс ввода указывается в поле «Часовой пояс».

Можно ли ввести несколько значений сразу?

Нет, инструмент рассчитан на одно значение, но результат пересчитывается сразу при вводе, поэтому удобно менять число или дату и сразу видеть все форматы. Чтобы вернуться к текущему моменту, нажмите «Сейчас».

Похожие инструменты

Курс «Проектирование API и интеграций»

Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.

Перейти к курсу на Stepik