bringer.ru

Unix
Timestamp

Переводит Unix-время в читаемую дату и обратно. Поддерживает секунды, миллисекунды и несколько форматов вывода.

Сейчас
Timestamp → Дата
Локальное время
UTC
ISO 8601
RFC 2822
Относительно
День недели
Миллисекунды
Примеры
Дата → Timestamp
Дата
Время
Часовой пояс
Unix timestamp (сек)
Unix timestamp (мс)
01Что это такое

Unix timestamp — это количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC. Эта точка называется Unix-эпохой или Epoch. Она была выбрана разработчиками Unix в конце 1960-х как удобная отправная точка.

Timestamp не зависит от часового пояса — это абсолютный момент времени. Одно и то же число 1741434000 означает один и тот же момент в Москве, Токио и Нью-Йорке. Разница лишь в том, как это число переводится в локальное время.

1970/01/01
Нулевая точка — Unix Epoch. Всё до неё — отрицательные числа
2³¹−1
Максимум для 32-битного int — 2 147 483 647. Переполнится 19 января 2038 года
1000×
JavaScript и большинство API возвращают миллисекунды — в 1000 раз больше, чем секунды

02Знаковые моменты

Некоторые timestamp стали культурными и техническими вехами — их знают наизусть системные администраторы и разработчики.

TimestampДата UTCСобытие
001.01.1970 00:00:00Unix Epoch — точка отсчёта
1 000 000 00009.09.2001 01:46:40Первый «красивый» миллиард секунд
1 111 111 11118.03.2005 01:58:31Timestamp из одних единиц
1 234 567 89013.02.2009 23:31:30Последовательные цифры 1–9
1 500 000 00014.07.2017 02:40:00Полтора миллиарда секунд
2 000 000 00018.05.2033 03:33:20Два миллиарда секунд
2 147 483 64719.01.2038 03:14:07Y2K38 — переполнение 32-битного int

03В коде

Получить текущий timestamp — одна строка в любом языке. Главное помнить: JavaScript возвращает миллисекунды, а большинство серверных языков — секунды.

// JavaScript — миллисекунды (÷1000 для секунд)
const ts = Date.now();                    // 1741434000000
const ts = Math.floor(Date.now() / 1000);  // 1741434000
const d  = new Date(1741434000 * 1000);     // обратно в Date

// Python — секунды
import time, datetime
ts = int(time.time())                   # 1741434000
d  = datetime.datetime.fromtimestamp(ts)  # обратно в datetime

// PHP — секунды
$ts = time();                             // 1741434000
$d  = new DateTime("@$ts");             // обратно в DateTime

// SQL (PostgreSQL)
SELECT EXTRACT(EPOCH FROM NOW());        -- текущий timestamp
SELECT TO_TIMESTAMP(1741434000);          -- обратно в timestamptz

При хранении в базе данных используйте тип BIGINT или TIMESTAMP WITH TIME ZONE — не INT, иначе столкнётесь с проблемой 2038 года.