UUID v7 时间戳解码

只需粘贴UUID v7字符串,即可提取其前48位中嵌入的毫秒级时间戳并还原为UTC日期时间。可检测非v7版本及variant异常,是姊妹工具「UUID v7生成」的逆向工具。

UUID v7的比特布局

比特范围 字段 说明
0-47 unix_ts_ms 自Unix纪元起的毫秒数,以大端序存储。本工具提取的值。
48-51 version UUID的版本号。v7固定为0111(十六进制为7)。
52-63 rand_a 12位随机值。部分实现用它来保持同一毫秒内的顺序。
64-65 variant 表示RFC 4122/9562变体的固定值10。十六进制表示时开头为8/9/a/b。
66-127 rand_b 62位随机值,用于避免冲突的熵源。

使用提示

  • 解码处理完全在浏览器内的JavaScript中完成,输入的UUID不会发送到toolbase.cc服务器。
  • 如果数据库主键使用UUID v7,即使没有专门的created_at字段,只需粘贴主键即可还原该记录的创建时间。
  • 输入非v7版本的UUID(如v4)会触发警告,但仍会显示从前48位机械提取的参考值,可用于了解不同格式之间的差异。
  • 如需生成UUID,可使用姊妹工具「UUID v7生成」,它生成的UUID可直接用本工具反向解码。
  • 将日志文件或API响应中的UUID v7逐个粘贴到此处,有助于在调试外部系统时估算事件发生的大致时间。

常见问题

UUID v7在RFC 9562中被标准化,其128位中的前48位以大端序固定嵌入毫秒级Unix时间戳。因此只需将前12位十六进制数字转换为数值并按毫秒解释,即可还原生成时间。

由于UUID v4是完全随机的,从中提取出的"时间戳"是与实际创建时间无关的无意义数值。本工具会检查版本位并显示警告,但仍会展示从前48位机械提取的结果供参考。

根据UUID v7规范,精度为毫秒级。如果在同一毫秒内生成了多个UUID v7,其前48位将完全相同,无法还原它们的生成顺序,区分工作完全交由rand_a和rand_b的随机值负责。

符合RFC 4122/9562的UUID要求第4组开头的十六进制数字必须为8、9、a或b之一。若为其他值(0-7或c-f),可能意味着采用了自定义ID生成逻辑或比特损坏,因此会显示警告。
ツールくん

闲话 ― 让UUID内置一块"时钟"

UUID v7的划时代之处在于,标识符本身永久保留了生成时间这一信息。在旧版UUID v4中,要知道记录的创建时间必须依赖单独的created_at字段,而若主键使用UUID v7,则仅凭ID字符串本身即可机械地还原生成时间。本工具正是作为姊妹工具"UUID v7生成"的逆向流程提供这一还原功能。

这一特性在故障排查和数据迁移场景中尤为有用。例如旧日志中留存的订单ID,或从外部系统接收到的事件ID若为UUID v7格式,无需查阅专门的时间戳字段即可立即确认该记录大致的创建时间。这对缺失created_at字段的旧系统排查,以及解析其他公司发行的UUID v7同样适用。

不过也需注意几点:UUID v7的时间戳完全依赖生成端的系统时钟,若生成服务器的时钟不准,提取结果也会随之偏差。此外,本工具对UUID v4等其他版本同样会机械地提取出"疑似时间戳",这仅仅是对比特位置的解读,并不保证该值具有实际意义,使用时请留意这一点。

→ 查看全部趣味知识