【问题标题】:Extract timestamp from uuid1从 uuid1 中提取时间戳
【发布时间】:2017-03-09 05:34:30
【问题描述】:

对于这个非常基本的话题,我很抱歉,但经过多次 Google 搜索后我无法找到正确的答案

我有一个 uuid1 并想提取其中包含的时间戳,这似乎是 100% 可能的,因为这个网站给了我正确的答案:https://www.famkruithof.net/uuid/uuidgen 当我尝试使用 ce53f406-9ba0-11e6-a6e8- e715bd508dc3

经过研究,我没有找到任何简单的解决方案...没有基本的解决方案来提取这个时间戳?

最好的问候,

【问题讨论】:

    标签: php timestamp uuid


    【解决方案1】:

    这个问题突然出现在我的雷达上,因为它被标记为“php”。如果您正在寻找一种 PHP 解决方案来从版本 1 UUID 中获取时间戳,您可以使用 ramsey/uuid 库来解析 UUID。 (这是我的图书馆,所以我有点偏见。)

    使用Composer安装库:

    composer require ramsey/uuid
    

    然后您可以执行以下操作从 UUID 中获取 PHP DateTime 对象:

    $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
    

    【讨论】:

      【解决方案2】:

      观察您提供的 UUID:

      ce53f406-9ba0-11e6-a6e8-e715bd508dc3
      

      第一个八度是ce53f406。这是十六进制数,单位为 100 纳秒。这意味着,这部分将在每 100 纳秒间隔内增加 1。这个八度可以有的最大数字是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 的时间戳,你应该能够通过比较得到另一个。

      【讨论】:

      • 抱歉这么久才给你这个非常好的答案的要点;)谢谢你的例子!
      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 2015-01-10
      • 2016-08-10
      • 2018-07-18
      • 2021-02-18
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      相关资源
      最近更新 更多