Понимание Unix-временных меток: полное руководство для разработчиков

2026-05-20 · Development

Что такое Unix timestamp?

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

Например, Unix timestamp 1719000000 представляет конкретный момент времени: примерно 22 июня 2024 года, 00:00 UTC. Каждую секунду это число увеличивается на единицу.

Зачем использовать Unix timestamps?

Unix timestamps повсеместно используются в разработке ПО по нескольким причинам:

  • Независимость от часовых поясов: Timestamp представляет один и тот же момент по всему миру. Нет неоднозначности относительно EST, PST или JST — он всегда основан на UTC.
  • Простое сравнение: Сравнение двух timestamp — это простое сравнение чисел. Если timestamp A больше timestamp B, значит событие A произошло после события B.
  • Эффективное хранение: Хранение 10-значного целого числа значительно экономичнее, чем хранение отформатированной строки даты, например «2024-06-22T00:00:00Z».
  • Математические операции: Добавление 86 400 секунд к timestamp даёт ровно 24 часа спустя. Не нужно беспокоиться о границах месяцев или високосных годах.

Секунды против миллисекунд

Unix timestamps бывают двух распространённых форматов:

  • Секунды (10 цифр): Оригинальный формат Unix timestamp. Пример: 1719000000
  • Миллисекунды (13 цифр): Используются JavaScript и многими современными API для более высокой точности. Пример: 1719000000000

Распространённый источник ошибок — смешивание этих двух форматов. Если вы передадите timestamp в миллисекундах функции, ожидающей секунды, дата будет неверной (примерно на 50 000 лет в будущем).

Работа с timestamp в разных языках

JavaScript

const now = Date.now(); // миллисекунды
const seconds = Math.floor(Date.now() / 1000);
const date = new Date(seconds * 1000);

Python

import time
seconds = int(time.time())
from datetime import datetime
dt = datetime.fromtimestamp(seconds)

PHP

$timestamp = time(); // секунды
$date = date('Y-m-d H:i:s', $timestamp);

MySQL

SELECT UNIX_TIMESTAMP(); -- текущий timestamp
SELECT FROM_UNIXTIME(1719000000); -- преобразование в дату

Распространённые ошибки

  • Проблема 2038 года: 32-битные знаковые целые числа переполнятся 19 января 2038 года. Системам, использующим 32-битные timestamp, потребуется переход на 64-битные целые числа.
  • Високосные секунды: Unix timestamps не учитывают високосные секунды. Большинство систем просто игнорируют их, что может вызвать небольшие расхождения с атомарным временем.
  • Отображение часового пояса: Всегда помните, что Unix timestamp — это UTC. Для отображения пользователям требуется конвертация в их локальный часовой пояс.

Конвертер timestamp TryQuickToolBox

Наш бесплатный инструмент конвертирует между Unix timestamp (секунды и миллисекунды), датами ISO 8601, временем UTC и локальным временем. Автоопределение означает, что вы можете вставить любой формат и получить мгновенный результат. Кликните любой результат, чтобы скопировать его в буфер обмена.

Конвертировать timestamp →