Конвертер временных меток
Конвертируйте Unix временные метки (секунды или миллисекунды с начала эпохи Unix) в читаемые строки даты и времени, и конвертируйте даты обратно в Unix временные метки. Поддерживает UTC и местные часовые пояса.
Unix время начало отсчет с 1 января 1970 года 00:00:00 UTC - эпоха Unix. Каждая Unix временная метка - это количество секунд (или миллисекунд в многих современных системах), прошедших с того момента. Временные метки используются во всем программировании, базах данных и API, так как они независимы от часового пояса, сортируемы как целые числа и легко сравниваются арифметически. Чтение 1711843200 как сырого числа ничего не говорит. Этот конвертер переводит его в 2024-03-31T00:00:00.000Z мгновенно, используя ISO 8601 - международный стандарт даты. Все преобразования выполняются локально в вашем браузере.
Как использовать этот инструмент
- Временная метка в дату: Введите Unix временную метку в секундах или миллисекундах - инструмент покажет дату в UTC и вашем местном часовом поясе.
- Дата в временную метку: Введите дату и время с помощью выбора даты, затем скопируйте получившуюся Unix временную метку в секундах и миллисекундах.
- Нажмите Сейчас, чтобы заполнить текущую временную метку для справки.
- Используйте селектор формата, чтобы отображать даты в ISO 8601, RFC 2822 или читаемом формате.
Понимание Unix временных меток
Секунды против миллисекунд
Существует два широко используемых соглашения. Unix время в секундах (10 цифр на 2024 год, например, 1711843200) используется API POSIX, C/C++ time(), Python time.time() и большинством серверных систем. Unix время в миллисекундах (13 цифр, например, 1711843200000) используется в JavaScript Date.now(), Java System.currentTimeMillis() и многими веб-API. Быстрое правило: 10 цифр означает секунды; 13 цифр означает миллисекунды. Наибольшая допустимая 32-битная знаковая целая временная метка - 2147483647 (секунды), что соответствует 19 января 2038 года - проблема 2038 года для устаревших систем.
Формат ISO 8601
ISO 8601 - это международный стандарт для представления дат и времени. Полный формат UTC - YYYY-MM-DDTHH:mm:ss.sssZ, где T разделяет дату и время, а Z обозначает UTC (время Зулу). ISO 8601 - рекомендуемый формат для ответов API и обмена данными, так как он однозначен, лексикографически сортируем (порядок строк соответствует хронологическому порядку) и может быть разобран на всех основных языках программирования.
Пример
Временная метка в дату
Ввод (секунды): 1711843200
UTC дата (ISO 8601): 2024-03-31T00:00:00.000Z
RFC 2822: Вс, 31 Мар 2024 00:00:00 +0000
Читаемая (UTC): Воскресенье, 31 Марта 2024 года в 12:00:00 AM UTC
Дата в временную метку
Ввод: 2024-03-31 00:00:00 UTC
Unix (секунды): 1711843200
Unix (миллисекунды): 1711843200000
Распространенные форматы временных меток
- Unix секунды (POSIX):
1711843200- 10 цифр, используется в C, Python, Go, большинстве системных API - Unix миллисекунды:
1711843200000- 13 цифр, используется в JavaScript, Java, многих REST API - ISO 8601 UTC:
2024-03-31T00:00:00Z- рекомендуется для ответов API и хранения данных - ISO 8601 с смещением:
2024-03-31T03:00:00+03:00- включает смещение часового пояса для однозначного местного времени - RFC 2822:
Вс, 31 Мар 2024 00:00:00 +0000- используется в заголовках электронной почты и заголовке HTTPDate - Ссылка на эпоху Unix:
0=1970-01-01T00:00:00Z
Лучшие практики
- Храните временные метки в UTC в базах данных - преобразовывайте в местное время только на уровне отображения
- Используйте ISO 8601 для ответов API - это однозначно и может быть разобрано на всех языках
- Предпочитайте миллисекунды секундам для новых систем, чтобы избежать арифметики с плавающей запятой с точностью до долей секунды
- Мигрируйте хранение 32-битных временных меток на 64-битное, чтобы избежать проблемы переполнения 2038 года
Для уникальных идентификаторов с встроенными временными метками UUID v7 (RFC 9562) сочетает Unix миллисекундные временные метки с случайными битами для сортируемых, уникальных идентификаторов - используйте Генератор UUID для UUID v4, когда порядок сортировки не требуется. Для отладки JSON ответов, содержащих временные метки, Форматировщик JSON делает вложенные поля временных меток читаемыми.
Часто задаваемые вопросы
Что такое Unix временная метка?
Unix временная метка - это количество секунд, прошедших с начала эпохи Unix - полуночи (00:00:00 UTC) 1 января 1970 года - исключая високосные секунды. Она независима от часового пояса, представляет собой простое целое число и легко сравнивается и сортируется. Unix временные метки являются универсальным внутренним представлением времени в операционных системах, базах данных и языках программирования.
Как узнать, является ли временная метка в секундах или миллисекундах?
Посчитайте количество цифр. На 2024 год Unix временные метки в секундах имеют 10 цифр (например, 1700000000). Временные метки в миллисекундах имеют 13 цифр (например, 1700000000000). Если число меньше примерно 10 миллиардов, это, вероятно, секунды. Временные метки с точностью до наносекунд (используемые в некоторых высокочастотных системах) имеют 19 цифр.
В чем проблема 2038 года?
Системы, хранящие Unix временные метки в виде 32-битных знаковых целых чисел, могут представлять значения только до 2,147,483,647. Этот максимум соответствует 19 января 2038 года в 03:14:07 UTC. Добавление одной секунды после этого приводит к переполнению целого числа и получению большого отрицательного числа, что нарушает расчеты дат. Современные 64-битные системы безопасны до примерно 292 миллиардов лет отныне.
Использует ли конвертер мой местный часовой пояс?
Да. Инструмент отображает как UTC, так и ваше местное время. Местное время определяется настройками часового пояса вашего браузера, которые отражают настроенный часовой пояс вашей операционной системы. Если ваши системные часы неправильно настроены или вы находитесь в поездке, отображение местного времени будет соответствовать этой настройке.
Как получить текущую Unix временную метку в коде?
JavaScript: Math.floor(Date.now() / 1000) для секунд или Date.now() для миллисекунд. Python: import time; int(time.time()). Go: time.Now().Unix() для секунд, time.Now().UnixMilli() для миллисекунд. PostgreSQL: EXTRACT(EPOCH FROM NOW()). Bash: date +%s.