Как перевести Unix timestamp в дату
Конвертер показывает текущий Unix timestamp в секундах и миллисекундах и переводит любое значение в понятную дату: в вашем часовом поясе, в UTC, в форматах ISO 8601 и RFC 2822. Обратное преобразование превращает дату и время в timestamp — например, чтобы подставить его в SQL-запрос или параметр API.
Единица измерения определяется автоматически по величине числа: 10 цифр — секунды, 13 — миллисекунды, 16 — микросекунды, 19 — наносекунды. Всё считается в браузере, значения никуда не отправляются.
Как пользоваться конвертером
- 1Скопируйте текущий timestamp из карточек вверху страницы — значения обновляются в реальном времени.
- 2Чтобы узнать дату, вставьте число в поле «Timestamp → дата». Если автоопределение ошиблось, выберите единицу вручную.
- 3Скопируйте нужный формат: локальное время, UTC, ISO 8601 или RFC 2822.
- 4Для обратного перевода введите дату в поле «Дата → timestamp», например 2024-03-01 12:00:00 или 01.03.2024 12:00, и выберите, в каком поясе она указана — вашем или UTC.
- 5Если в строке уже есть часовой пояс, например +03:00 или Z, конвертер учтёт его независимо от переключателя.
Что такое Unix timestamp
Unix timestamp, или Unix-время, — количество секунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Этот момент называют эпохой Unix. Значение не зависит от часового пояса: в Москве, Владивостоке и Лондоне в одну и ту же секунду timestamp одинаковый, отличается только его перевод в местное время.
Unix-время не учитывает високосные секунды: каждые сутки в нём длятся ровно 86 400 секунд. Благодаря этому разницу между двумя моментами легко посчитать простым вычитанием.
| Timestamp | Дата и время (UTC) | Событие |
|---|---|---|
| 0 | 01.01.1970 00:00:00 | Эпоха Unix |
| 1 000 000 000 | 09.09.2001 01:46:40 | Первый timestamp из 10 цифр |
| 1 700 000 000 | 14.11.2023 22:13:20 | Круглое число, которое часто встречается в примерах |
| 2 000 000 000 | 18.05.2033 03:33:20 | Два миллиарда секунд |
| 2 147 483 647 | 19.01.2038 03:14:07 | Максимум знакового 32-битного числа |
| 10 000 000 000 | 20.11.2286 17:46:40 | Первый timestamp из 11 цифр |
Секунды или миллисекунды: как отличить
Разные языки и системы хранят время с разной точностью. Самый надёжный признак — количество цифр в текущих датах. Конвертер считает секундами всё, что меньше 100 миллиардов (это даты до 5138 года), поэтому миллисекундные значения до марта 1973 года нужно отметить вручную.
| Цифр сейчас | Единица | Где встречается |
|---|---|---|
| 10 | Секунды | Unix, PHP time(), Go Unix(), MySQL UNIX_TIMESTAMP() |
| 13 | Миллисекунды | JavaScript Date.now(), Java currentTimeMillis() |
| 16 | Микросекунды | Go UnixMicro(), трейсинг, часть логов |
| 19 | Наносекунды | Go UnixNano(), Python time.time_ns() |
Как получить текущий timestamp в разных языках
Команды ниже возвращают текущее Unix-время. Обратите внимание, что JavaScript и Java по умолчанию работают в миллисекундах, а большинство остальных — в секундах.
| Язык или система | Секунды | Миллисекунды |
|---|---|---|
| Bash (GNU date) | date +%s | date +%s%3N |
| JavaScript | Math.floor(Date.now() / 1000) | Date.now() |
| Python | int(time.time()) | time.time_ns() // 1_000_000 |
| PHP | time() | (int) (microtime(true) * 1000) |
| Go | time.Now().Unix() | time.Now().UnixMilli() |
| Java | Instant.now().getEpochSecond() | System.currentTimeMillis() |
| PostgreSQL | extract(epoch from now())::bigint | (extract(epoch from now()) * 1000)::bigint |
| MySQL | UNIX_TIMESTAMP() | ROUND(UNIX_TIMESTAMP(NOW(3)) * 1000) |
Форматы даты: ISO 8601, RFC 2822 и HTTP-date
После перевода timestamp в дату важно выбрать формат, который поймёт принимающая сторона. Для одного и того же момента — 1 700 000 000 — форматы выглядят так:
| Формат | Пример | Где используется |
|---|---|---|
| ISO 8601 | 2023-11-14T22:13:20Z | JSON API, логи, базы данных |
| ISO 8601 со смещением | 2023-11-15T01:13:20+03:00 | API с явным часовым поясом |
| RFC 2822 | Tue, 14 Nov 2023 22:13:20 +0000 | Заголовок Date в электронной почте, RSS |
| HTTP-date (RFC 9110) | Tue, 14 Nov 2023 22:13:20 GMT | HTTP-заголовки Date, Last-Modified, Expires |
| Локальный формат | 15.11.2023, 01:13:20 | Интерфейсы для людей (здесь — московское время) |
Частые ошибки при работе с timestamp
Большинство проблем со временем в коде сводится к путанице единиц и часовых поясов. Проверьте эти места, если дата выглядит странно:
- Секунды переданы туда, где ждут миллисекунды: 1 700 000 000 превращается в 20 января 1970 года.
- Миллисекунды переданы как секунды: дата уезжает на десятки тысяч лет вперёд или парсер выдаёт ошибку.
- Смещение пояса применено дважды: время «уезжает» на 3 часа для Москвы, потому что локальное время сохранили как UTC.
- Дата без пояса прочитана по-разному: строка 2024-03-01 12:00 на сервере в UTC и в браузере в Москве означает разные моменты.
- Сравнение строк вместо чисел: «999999999» больше «1000000000» при строковом сравнении.
Проблема 2038 года
Если время хранится в знаковом 32-битном целом, максимальное значение — 2 147 483 647, то есть 19 января 2038 года 03:14:07 UTC. Через секунду счётчик переполняется и становится отрицательным, а дата превращается в 13 декабря 1901 года.
Современные 64-битные системы, языки и базы данных хранят время в 64-битных числах, и для них проблемы нет. Риск остаётся у старых встраиваемых устройств, 32-битных сборок и полей фиксированного размера — например, тип TIMESTAMP в MySQL ограничен той же датой в 2038 году.
Частые вопросы
Как перевести Unix timestamp в обычную дату?
+
Вставьте число в поле «Timestamp → дата»: конвертер сам определит единицу и покажет дату в вашем часовом поясе, в UTC, ISO 8601 и RFC 2822. В Linux то же самое делает команда date -d @1700000000.
Как понять, секунды это или миллисекунды?
+
Посчитайте цифры: у текущих дат timestamp в секундах состоит из 10 цифр, в миллисекундах — из 13. Если после перевода получился 1970 год или далёкое будущее, скорее всего, единица выбрана неверно.
Зависит ли Unix timestamp от часового пояса?
+
Нет. Timestamp считается от эпохи в UTC и одинаков во всём мире. Часовой пояс нужен только для отображения: один и тот же timestamp в Москве и Новосибирске показывает разное местное время.
Учитывает ли Unix-время високосные секунды?
+
Нет, в Unix-времени каждые сутки длятся ровно 86 400 секунд. Поэтому разница двух timestamp — это реальная длительность без поправки на високосные секунды.
Что означает отрицательный timestamp?
+
Момент до 1 января 1970 года. Например, −86 400 — это 31 декабря 1969 года 00:00:00 UTC. Конвертер поддерживает отрицательные значения.
Как перевести дату в timestamp в Excel?
+
Если в ячейке A1 дата в UTC, используйте формулу =(A1-ДАТА(1970;1;1))*86400. Обратное преобразование: =A1/86400+ДАТА(1970;1;1) с форматом ячейки «Дата и время».
Что будет с timestamp в 2038 году?
+
Системы, которые хранят время в знаковом 32-битном числе, переполнятся 19 января 2038 года в 03:14:07 UTC. Для 64-битного времени это не проблема: его хватит на миллиарды лет.