2016-10-26 2 views
1

Я извиняюсь за это довольно основную тему, но я не в состоянии нашли правильный ответ после поиска множественного GoogleИзвлечение временной метки из uuid1

я получил uuid1 и хотел бы, чтобы извлечь временную метка содержит в нем, это кажется чтобы быть на 100% возможным, потому что этот сайт дает мне правильный ответ: https://www.famkruithof.net/uuid/uuidgen, когда я пытаюсь использовать ce53f406-9ba0-11e6-a6e8-e715bd508dc3

После моего исследования я не нашел никакого легкого решения ... Нет базовое решение для извлечения этой метки времени?

С наилучшими пожеланиями,

ответ

1

Наблюдайте за UUID вы предоставили:

ce53f406-9ba0-11e6-a6e8-e715bd508dc3 

Первая октава ce53f406. Это шестнадцатеричное число и имеет единицу в 100 нано-секунд. Смысл, эта часть будет увеличиваться на 1 каждые 100 секунд. Максимальное количество этой октавы может быть ffffffff. Как только ffffffff достигнут левой, самая октава сбрасывается на 0, а следующая октава (9ba0) увеличивается на 1 и так далее. Поэтому в каждом 100 нана второй интервале UUID бы получить сгенерированные так:

ce53f406-9ba0-11e6-a6e8-e715bd508dc3 
ce53f407-9ba0-11e6-a6e8-e715bd508dc3 
ce53f408-9ba0-11e6-a6e8-e715bd508dc3 
ce53f409-9ba0-11e6-a6e8-e715bd508dc3 
ce53f40a-9ba0-11e6-a6e8-e715bd508dc3 
. 
. 
. 
fffffffd-9ba0-11e6-a6e8-e715bd508dc3 
fffffffe-9ba0-11e6-a6e8-e715bd508dc3 
ffffffff-9ba0-11e6-a6e8-e715bd508dc3 
00000000-9ba1-11e6-a6e8-e715bd508dc3 

Теперь вы знаете логику, и если вы знаете, метку времени одного UUID вы должны быть в состоянии получить другой путь сравнения.

+0

Извините за то, что долго, чтобы дать вам точку для этого очень хорошего ответа;) Спасибо за пример! –

+0

Добро пожаловать. Я рад, что это помогло :) –

1

Этот вопрос появился на моем радаре, так как он помечен как «php». Если вы ищете решение PHP, чтобы получить метку времени из UUID версии 1, вы можете использовать библиотеку ramsey/uuid для анализа UUID. (Это моя библиотека, так что я немного предвзято.)

Установите библиотеку с помощью Composer:

composer require ramsey/uuid 

И тогда вы можете сделать что-то подобное, чтобы получить PHP DateTime объект из UUID:

$myUuid = 'ce53f406-9ba0-11e6-a6e8-e715bd508dc3'; 

$uuid = \Ramsey\Uuid\Uuid::fromString($myUuid); 

echo 'UUID timestamp (60-bit integer): ' . $uuid->getTimestamp() . "\n"; 
echo 'Formatted date/time: ' . $uuid->getDateTime()->format('r') . "\n"; 
echo 'Unix timestamp: ' . $uuid->getDateTime()->getTimestamp() . "\n"; 

Этот пример напечатает то, что выглядит как:

UUID timestamp (60-bit integer): 136967953640059910 
Formatted date/time: Wed, 26 Oct 2016 17:22:44 +0000 
Unix timestamp: 1477502564 
Смежные вопросы