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等其他版本同样会机械地提取出"疑似时间戳",这仅仅是对比特位置的解读,并不保证该值具有实际意义,使用时请留意这一点。