RunToolz iconRunToolz
Welcome to RunToolz!
Временная меткаПрограммированиеБазы данных

Что такое Unix timestamp и почему тебе должно быть не всё равно?

То гигантское число в твоей базе данных не случайное. Вот что оно означает и как с ним работать.

RunToolz Team12 января 2026 г.3 min read

Ты отлаживаешь ответ API. Есть поле с названием created_at со значением 1704067200. Какой это день?

Это Unix timestamp. Это количество секунд с 1 января 1970 года. И как только ты это поймёшь, ты будешь видеть его везде.

Почему 1970?

Unix разрабатывался в конце 1960-х. Дизайнерам нужна была отправная точка для вычислений времени. 1 января 1970 года был достаточно недавним, чтобы быть практичным, и достаточно ранним, чтобы охватить большую часть истории вычислений.

Этот момент — полночь UTC 1 января 1970 года — называется эпохой Unix.

Хотите попробовать сами?Конвертировать Timestamp

Почему секунды вместо дат?

Даты сложны. Часовые пояса, летнее время, високосные годы, переменная длина месяцев. "15 марта 2024 года в 3 часа дня EST" требует много парсинга.

Timestamp — это просто число. 1710522000. Легко хранить, легко сравнивать, легко делать математику.

Хочешь знать, какое событие произошло первым? Сравни два числа. Хочешь знать, сколько что-то заняло? Вычти timestamps. Хочешь добавить 24 часа? Добавь 86400.

Преимущество часовых поясов

Вот умная часть: timestamps всегда UTC.

Когда кто-то в Токио и кто-то в Нью-Йорке оба записывают один и тот же момент, они получают один и тот же timestamp. Отображение может различаться — один видит 9 утра, другой видит 7 вечера — но базовое число идентично.

Это делает возможными распределённые системы. Базы данных, API, лог-файлы — все используют одну и ту же точку отсчёта независимо от того, где находятся серверы.

Миллисекунды vs секунды

JavaScript использует миллисекунды с эпохи. Большинство других языков используют секунды.

1704067200 (секунды) = 1 января 2024, 00:00:00 UTC 1704067200000 (миллисекунды) = Тот же момент

Если timestamp выглядит слишком большим, вероятно, это миллисекунды. Раздели на 1000.

Быстрое чтение Timestamps

Несколько опорных точек для калибровки твоей мысленной математики:

  • 1000000000 (1 миллиард) = 9 сентября 2001
  • 1600000000 = Сентябрь 2020
  • 1700000000 = Ноябрь 2023
  • 1800000000 = Январь 2027

Текущие timestamps в диапазоне 1.7 миллиарда. Если ты видишь что-то, начинающееся с 17, это, вероятно, недавний timestamp.

Частые операции

Текущий timestamp:

Math.floor(Date.now() / 1000)  // JavaScript
import time; int(time.time())  # Python

Timestamp в дату:

new Date(1704067200 * 1000)  // JavaScript нужны миллисекунды

Дата в timestamp:

Math.floor(new Date('2024-01-01').getTime() / 1000)

Проблема 2038 года

Unix timestamps изначально хранились как 32-битные знаковые целые числа. Максимальное значение? 2,147,483,647.

Это 19 января 2038 года, 03:14:07 UTC.

После этого момента 32-битные системы переполнятся. Это Y2K для timestamps.

Большинство современных систем сейчас используют 64-битные целые числа, которые не переполнятся миллиарды лет. Но унаследованные системы существуют. Если ты работаешь со старым кодом, стоит проверить.

Когда Timestamps становятся странными

Отрицательные timestamps. Даты до 1970 — отрицательные числа. -86400 — это 31 декабря 1969 года.

Високосные секунды. UTC иногда добавляет секунду, чтобы оставаться синхронизированным с вращением Земли. Большинство систем игнорируют это. Иногда это вызывает хаос.

Drift часов. Часы серверов могут не соглашаться. Два timestamps с разных машин могут быть не напрямую сравнимыми, если часы не были синхронизированы.


Timestamps везде, как только начинаешь смотреть. API-ответы, записи баз данных, лог-файлы, куки. Понимание их делает отладку быстрее, а код, связанный со временем, менее загадочным.