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等其他版本同樣會機械地提取出"疑似時間戳",這僅僅是對位元位置的解讀,並不保證該值具有實際意義,使用時請留意這一點。