Как UUID хранят временны́е метки?

Несколько версий UUID встраивают временну́ю метку непосредственно в свою структуру. UUID v1, введённый в RFC 4122, кодирует 60-битную григорианскую временну́ю метку, представляющую 100-наносекундные интервалы, начиная с 15 октября 1582 года. UUID v6 переупорядочивает те же поля временно́й метки для улучшенной сортировки, а UUID v7, определённый в RFC 9562, хранит 48-битную временну́ю метку Unix epoch в миллисекундах. Эти встроенные временны́е метки позволяют восстановить точный момент генерации UUID — что полезно для отладки, аудита и криминалистического анализа.

Не каждый UUID содержит информацию о времени. Версии 3, 4 и 5 формируются на основе случайных данных или хэшей пространства имён, поэтому они не содержат восстанавливаемой временно́й метки. Версия 2 (DCE Security) включает временну́ю метку, но на практике используется редко.

Описание инструмента

Этот инструмент извлекает и декодирует временну́ю метку, встроенную в UUID на основе времени. Вставьте любой UUID и мгновенно увидите закодированные дату и время в нескольких форматах: ISO 8601, UTC, местное время, а также Unix-временны́е метки в секундах и миллисекундах. Инструмент автоматически определяет версию UUID и применяет соответствующий алгоритм декодирования.

Примеры

Входные данные UUID v1:

6ba7b810-9dad-11d1-80b4-00c04fd430c8 → 7 апреля 1998 года

Входные данные UUID v7:

018f3e88-5c00-7b3a-8512-2d4a3f8e9c01 → 3 мая 2024 года

Входные данные UUID v4 (без временно́й метки):

550e8400-e29b-41d4-a716-446655440000 → «Эта версия UUID не содержит временно́й метки»

Возможности

  • Поддерживает UUID v1 (григорианская временна́я метка), v6 (переупорядоченная григорианская) и v7 (Unix epoch в миллисекундах)
  • Отображает результаты в форматах ISO 8601, UTC, местного времени и Unix-временно́й метки
  • Автоматически определяет версию UUID и выбирает правильный метод декодирования
  • Проверяет формат UUID перед попыткой извлечения
  • Выводит понятное сообщение для версий UUID, не содержащих временны́х меток

Принцип работы

Каждая версия UUID на основе времени хранит временну́ю метку по-своему:

  • UUID v1 разбивает 60-битную григорианскую временну́ю метку на три поля: time_low (биты 0–31), time_mid (биты 32–47) и time_hi (биты 48–59). Временна́я метка отсчитывает 100-наносекундные интервалы, начиная с 15 октября 1582 года.
  • UUID v6 переупорядочивает поля временно́й метки v1 таким образом, чтобы наиболее значимые биты шли первыми, что обеспечивает естественную сортировку UUID по времени создания при использовании той же григорианской эпохи.
  • UUID v7 использует более простой подход: первые 48 бит содержат стандартную Unix-временну́ю метку в миллисекундах, что делает извлечение простым и совместимым с современными системами.

Сценарии использования

  • Отладка распределённых систем — определите точное время создания записи или события, декодировав присвоенный ей UUID
  • Аудит и криминалистика — проверьте временны́е метки создания в базах данных, использующих UUID на основе времени в качестве первичных ключей
  • Планирование миграции — анализируйте временны́е метки UUID для понимания распределения и возраста данных перед миграцией между системами