2011-06-21 55 views
0

如何使用JavaScript從時間戳編號創建UUID?從時間戳創建UUID(如數字)

是否有任何存在API?

+0

您能否提供更多信息?你的意思是什麼時間戳記號碼?現在這個問題不是很清楚,就像我在回覆中解釋的那樣。 – pr1001

回答

3

按照Wikipedia page,一個UUID是一個128位的數字。 Javascript號碼是64位浮點數(according to this SO answer),所以我假設你已經有了一個字符串形式的UUID號碼。

引用維基百科:「一個UUID由32個十六進制數字組成,顯示在由連字符分隔的5組中,格式爲8-4-4-4-12,總共36個字符(32位數和4個連字符)。 「 Javascript NumbertoString方法可以給出一個基(十六進制是基數爲16),但我們當然不能在這裏使用Number s。

所以,你需要一些代碼,可以先處理128位數字,然後將它們轉換爲十六進制。有各種各樣的BigDecimalBigNumber JavaScript庫敲。只需找到一個你喜歡的,也許使用a SO question作爲指導。做完,你將有一個字符串,像這樣:

var hexNum = "550e8400e29b41d4a716446655440000"; 

然後你用簡單的隔板-結合不同的子串,你有你的UUID字符串:

var UUID = hexNum.substr(0, 8) + '-' + hexNum.substr(8, 4) + '-' + 
    hexNum.substr(12, 4) + '-' + hexNum.substr(16, 4) + '-' + hexNum.substr(20) 

更新:在這個過程中寫我的回覆原始問題已更新,問你如何創建一個'時間戳編號'的UUID。我不確定那會是什麼,也許是一個Unix時間戳,例如Date.now()的結果。由於UUID應該(實際上)是唯一的,而毫秒時間幾乎不是唯一的,所以我想你會想在創建號碼之前在數字中引入一些獨特的元素。即使你沒有,你仍然需要將64位Number轉換爲128位數字,再次使用某種BigDecimal或BigNumber庫。

+0

謝謝。我發現了一個很好的js代碼來完成反向操作。我發現我的第一個操作不是從UUID到日期時間戳。我正在處理另一種格式。但是,感謝您的定義。 :) – Victor

0
+0

不,這個問題即將創建一個隨機UUID。我已經擁有一個UUID,我必須以UUID格式編寫它。 – Victor

+1

無論如何,請不要通過鏈接到另一個問題來回答問題。 –