Конвертер даты/времени
Универсальный парсер даты и времени, обрабатывающий временные метки Unix, даты ISO 8601, формат RFC 2822, американский и европейский стили дат, полные даты и относительные выражения. Конвертирует между форматами, показывает относительное время и предоставляет справку по текущей временной метке.
Спецификации
Типичные сценарии использования
- Отладка ответов API, содержащих временные метки или даты
- Преобразование временных меток лог-файлов в читаемые даты
- Разбор дат из различных региональных форматов
- Вычисление временных разниц между событиями
- Генерация временных меток для API-запросов
- Проверка времени истечения токенов (claim exp в JWT)
- Конвертация между форматами дат для международных команд
Возможности
- Автоопределение формата: временные метки Unix, ISO 8601, RFC 2822, американские/европейские даты и другие
- Разбор временных меток Unix в секундах, миллисекундах, микросекундах и наносекундах
- Обработка дат ISO 8601 с указанием времени или без (2024-01-25T12:00:00Z)
- Разбор американского формата (01/25/2024), европейского формата (25.01.2024) и полных дат (January 25, 2024)
- Распознавание относительных выражений: now, today, yesterday, tomorrow
- Отображение относительного времени ("2 часа назад", "через 3 дня")
- Метки статуса Прошлое/Будущее/Сегодня
- Отображение дня недели, номера недели, квартала и дня года
- Сетка календарных метрик (неделя года, квартал, день года)
- Раздел дополнительной информации (часовой пояс, дней в месяце, високосный год)
- Конвертация в несколько выходных форматов с кнопками копирования
- Вывод в микросекундах и наносекундах Unix
- Карточка текущего времени с кнопкой обновления
Примеры
Временная метка Unix (миллисекунды)
Попробовать →Временная метка в стиле JavaScript в миллисекундах.
1706188800000Советы
- JavaScript Date.now() возвращает миллисекунды; большинство Unix-инструментов используют секунды.
- Формат ISO 8601 (2024-01-25T12:00:00Z) — наиболее переносимый и однозначный формат.
- Используйте временные метки UTC для хранения; конвертируйте в местное время только для отображения.
- Когда дата неоднозначна (например, 01/02/2024), инструмент использует контекстные подсказки для определения формата.
- "Проблема 2038 года" затрагивает 32-битные системы, использующие знаковые целые числа для Unix-секунд.
Описание Конвертер даты/времени
Временные метки Unix представляют конкретный момент времени как количество секунд, прошедших с эпохи Unix: 1 января 1970 года, 00:00:00 UTC. Это простое целочисленное представление является универсальным форматом времени в вычислительной технике, используемым базами данных, API, файловыми системами, лог-файлами и интерфейсами операционных систем. Формат однозначен — в отличие от человекочитаемых дат, временная метка Unix всегда ссылается на точно один момент времени независимо от часового пояса.
Два уровня точности являются общепринятыми. Временные метки с точностью до секунд (10 цифр, как 1738800000) — это традиционный Unix-формат, используемый большинством Unix API, баз данных и функцией C time(). Временные метки с точностью до миллисекунд (13 цифр, как 1738800000000) используются JavaScript (Date.now()), Java (System.currentTimeMillis()) и многими веб-API. Этот инструмент автоматически определяет точность и корректно обрабатывает оба варианта.
ISO 8601 — стандартный человекочитаемый формат даты-времени: 2025-02-05T12:00:00Z. Буква T разделяет дату и время, а Z обозначает UTC (время по Гринвичу). Смещения часовых поясов используют нотацию +HH:MM или -HH:MM. ISO 8601 требуется JSON Schema, широко используется в REST API и рекомендуется для любого обмена строками даты-времени. Формат RFC 2822 (используемый в заголовках электронной почты) — ещё одно распространённое текстовое представление.
Обработка часовых поясов — наиболее частый источник ошибок, связанных с датой и временем. Разработчики часто путают временные метки UTC с местным временем, неправильно применяют конвертацию часовых поясов или сохраняют местное время без информации о часовом поясе. Лучшая практика — всегда хранить и передавать время в UTC, преобразуя в местное время только для отображения.
Системы, хранящие временные метки Unix как 32-битные знаковые целые числа, переполнятся 19 января 2038 года в 03:14:07 UTC, перейдя к отрицательному числу, представляющему декабрь 1901 года. Это аналогично проблеме Y2K, но затрагивает вычислительную инфраструктуру более широко. Решение — использование 64-битных целых чисел, расширяющих диапазон до миллиардов лет. Большинство современных систем уже используют 64-битное время, но встроенные системы и устаревший код могут быть по-прежнему уязвимы.
При выборе между хранением дат в виде временных меток или форматированных строк учитывайте сценарий использования. Временные метки (целые числа) идеальны для вычислительно интенсивных сценариев, таких как сортировка, расчёт продолжительности и сравнение дат — они компактны, однозначны и нейтральны к часовым поясам. Строки ISO 8601 предпочтительны, когда важна человекочитаемость, когда необходимо сохранить контекст часового пояса или когда база данных поддерживает нативные типы datetime. PostgreSQL timestamptz, например, хранит данные во внутреннем формате UTC и преобразует их для отображения.
Даты, сдвинутые на один день, почти всегда вызваны путаницей с часовыми поясами. Временная метка UTC для 5 февраля в 23:00 UTC — это уже 6 февраля в часовых поясах UTC+2. В JavaScript Date() использует местное время для строк с одной датой, но UTC для строк datetime с указателями часового пояса. Явное указание часовых поясов и последовательное использование UTC для хранения и передачи предотвращает эти неочевидные ошибки.