Unix Timestamp (временная метка Unix) — это способ представления времени в виде целого числа, которое обозначает количество секунд, прошедших с 00:00:00 UTC (по Гринвичу) 1 января 1970 года. Эта точка отсчета называется Эпохой Unix (Unix Epoch).
Проще говоря:
- Эпоха Unix (Unix Epoch):
- Это фиксированная начальная точка времени.
1 января 1970 года, 00:00:00 UTC
.- Аналогична “нулевому километру” для отсчета времени в компьютерных системах.
- Unix Timestamp:
- Это количество секунд, прошедших с момента Эпохи Unix.
- Положительное число: Время после 1 января 1970 (например,
1718553600
— это 17 июля 2024, 00:00:00 UTC). - Отрицательное число: Время до 1 января 1970 (например,
-3600
— это 31 декабря 1969, 23:00:00 UTC). - Целое число: Обычно хранится как 32-битное или 64-битное целое число (
int
).
Ключевые особенности и почему это важно:
- Универсальность: Предоставляет единый, простой для компьютеров формат для хранения и обработки времени, независимо от часовых поясов (основное время — UTC).
- Простота вычислений: Очень легко вычитать и добавлять секунды (или дни/часы/минуты, преобразованные в секунды) для расчета интервалов или будущих/прошлых дат.
- Широкое применение: Фундаментально используется в операционных системах (Unix, Linux, macOS, Android, iOS), базах данных, веб-технологиях, протоколах, логах, файловых системах и практически везде, где компьютерам нужно работать со временем.
- Отсутствие формата: Это просто число, не требующее сложного парсинга как “2024-07-17 12:30:45”.
Примеры:
0
= 1 января 1970, 00:00:00 UTC86400
= 2 января 1970, 00:00:00 UTC (ровно 24 часа * 3600 секунд)1672531200
= 1 января 2023, 00:00:00 UTC1718553600
= 17 июля 2024, 00:00:00 UTC (на момент написания этого ответа текущий timestamp был примерно1718553600
)
Важные нюансы:
- Високосные секунды: Unix timestamp обычно не учитывает високосные секунды, добавленные для согласования атомного времени с вращением Земли. Поэтому метка
86400
всегда соответствует ровно 24 часам после Эпохи, даже если за это время была добавлена високосная секунда. На практике системы могут корректировать отображение времени с учетом високосных секунд, но сам числовой timestamp остается непрерывным. - Проблема 2038 года (Y2038): Системы, использующие 32-битный целочисленный тип (
int
) для хранения timestamp, столкнутся с проблемой 19 января 2038 года в 03:14:07 UTC. Максимальное значение 32-битного знакового целого (2 147 483 647) будет достигнуто, и произойдет переполнение (timestamp “обернется” к 1901 году или вызовет ошибку). Современные системы используют 64-битные целые, что отодвигает проблему на миллиарды лет. - Точность: Классический Unix timestamp имеет точность до секунды. Для большей точности (миллисекунды, микросекунды) используются дробные числа (например,
1718553600.123
) или отдельные поля.
Как посмотреть текущий Unix Timestamp:
- В Linux/macOS терминале:
date +%s
- В Python:
import time; print(int(time.time()))
- В JavaScript (в браузере или Node.js):
Math.floor(Date.now() / 1000)
(обратите внимание,Date.now()
возвращает миллисекунды, поэтому делим на 1000). - Множество онлайн-конвертеров: Просто поищите “current unix timestamp” или “unix timestamp converter”.
Unix Timestamp — это простой и мощный числовой способ представить любой момент времени относительно единой точки отсчета (Эпохи Unix — 1 января 1970). Он лежит в основе работы со временем в подавляющем большинстве современных компьютерных систем.