Конвертер epoch и Unix timestamp

Вставьте epoch-время или Unix timestamp, и вы увидите дату в UTC, в вашем часовом поясе и в любом другом, в форматах ISO 8601 и RFC 2822 и сколько времени прошло. Секунды, миллисекунды, микросекунды и наносекунды различаются по длине числа, а любую дату можно перевести обратно в epoch-время.

Текущее Unix-время
Секунды —
Миллисекунды —
Цифры, при необходимости со знаком минус или десятичной точкой. Пробелы и запятые между группами цифр игнорируются.
Единица

Введите timestamp или нажмите «Подставить текущее».

Разбираете timestamp в логах сервера? Сравнивайте серверы по тому, сколько они реально стоят в месяц. Сейчас от 3,02 € в месяц, на выбор: 2 226 серверов.

Дата и время в timestamp

В часовом поясе

Введите дату и время.

Работает в вашем браузере: ничего из введённого не отправляется на сервер.

Как это работает

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

Многие системы считают в более мелких единицах: JavaScript и Java — в миллисекундах, некоторые базы данных и средства трассировки — в микросекундах, Go и интерфейсы ядра Linux часто — в наносекундах. Конвертер различает их по длине: timestamp в секундах для любой даты с 2001 по 2286 год содержит 10 цифр, в миллисекундах — 13, в микросекундах — 16, в наносекундах — 19. Для дат, далёких от сегодняшней, выберите единицу сами.

Дата показывается в UTC, в часовом поясе вашего браузера и в выбранном вами, на основе базы часовых поясов браузера, поэтому летнее время применяется так, как действовало в ту дату. ISO 8601 — формат для данных и API; RFC 2822 используется в заголовках e-mail.

Пример

1700000000 — это 14 ноября 2023 года, 22:13:20 UTC: 2023-11-14T22:13:20Z в ISO 8601 и Tue, 14 Nov 2023 22:13:20 +0000 в RFC 2822. В Нью-Йорке в тот момент было 17:13:20 того же дня, в Индии — 03:43:20 следующего. Тот же момент в миллисекундах — 1700000000000.

Unix-время в коде

Текущее epoch-время и перевод epoch обратно в дату в языках, на которых чаще всего работают серверы:

epoch
# Bash (GNU date; macOS: date -r 1700000000)
date +%s
date +%s%3N          # milliseconds
date -d @1700000000

# Python
import time; int(time.time())
from datetime import datetime, timezone; datetime.fromtimestamp(1700000000, timezone.utc)

// JavaScript
Math.floor(Date.now() / 1000)
new Date(1700000000 * 1000).toISOString()

<?php
time();
date('c', 1700000000);

-- SQL
SELECT UNIX_TIMESTAMP();                    -- MySQL, MariaDB
SELECT EXTRACT(EPOCH FROM now())::bigint;   -- PostgreSQL
SELECT unixepoch();                         -- SQLite 3.38+
SELECT to_timestamp(1700000000);            -- PostgreSQL: epoch to date

Вопросы

Что такое epoch-время?

Epoch-время, оно же Unix-время, — это число секунд, прошедших с эпохи Unix: 1 января 1970 года, 00:00:00 UTC. Более ранние даты отрицательные. Почти все операционные системы и языки программирования ведут отсчёт времени от неё, а конвертер epoch вроде этого переводит такое число в читаемую дату и обратно.

Что такое проблема 2038 года?

Программы, которые хранят Unix-время в знаковом 32-битном целом числе, могут считать только до 2 147 483 647, то есть до 19 января 2038 года, 03:14:07 UTC. Секундой позже число переходит в отрицательное и читается как декабрь 1901 года. Современные 64-битные системы используют 64-битный time_t и не затронуты, а вот старые встраиваемые устройства, форматы файлов и столбцы баз данных с 32-битными секундами могут пострадать.

Мой timestamp в секундах или миллисекундах?

Посчитайте цифры. Текущая дата в секундах содержит 10 цифр (1700000000), в миллисекундах — 13 (1700000000000). Date.now() в JavaScript и System.currentTimeMillis() в Java возвращают миллисекунды; date +%s, time() в PHP и int(time.time()) в Python — секунды. Если дата получается в 1970 году или через тысячи лет, единица выбрана неверно.

Есть ли у Unix timestamp часовой пояс?

Нет. В один и тот же момент timestamp — это одно и то же число по всему миру; он всегда отсчитывается от полуночи UTC 1 января 1970 года. Часовой пояс важен только при превращении в календарную дату и время на часах, поэтому конвертер показывает один timestamp в нескольких поясах.

Учитывает ли Unix-время високосные секунды?

Нет. Unix-время считает каждые сутки ровно 86 400 секундами, поэтому 27 високосных секунд, добавленных в UTC с 1972 года (последняя в конце 2016 года), не учитываются. Для журналов и повседневного использования это не важно.