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