2014-03-02 27 views
2

我曾經使用代碼爲我的文件名創建一串數字以避免重複。它所做的是,它會給我一串準確的當前時間,這是非常準確的(如1/1000000000秒)。我不記得我是如何做到這一點的,因爲我只是複製並粘貼我的舊代碼。有誰知道如何做到這一點?如何根據當前時間使用javascript創建一串數字?

+2

['新的Date()的getTime() '](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_對象/日期)返回整數值,表示從1970年1月1日00:00:00 UTC(Unix Epoch)開始的毫秒數.' – Xotic750

+0

你是男人。 –

回答

2

在MDN上有關於Javascript Date構造函數/對象的很好的參考。但基本上,在較老的環境中,確實如此。

new Date().getTime()

在新的環境中,你可以做

Date.now()

兩個返回Integer value representing the number of milliseconds since 1 January 1970 00:00:00 UTC (Unix Epoch).

你也可以做

new Date().valueOf()

但它可能不如以上那些可靠。

1

通過使用Date對象的getTime方法,您可以創建檢索從時期開始已經過去的毫秒數。

var now = new Date(); console.log(now.getTime());

+1

['Unix timestamp'](http://en.wikipedia.org/wiki/Unix_time)不同。'自00:00:00開始經過的秒數協調世界時(UTC),星期四,1 1970年1月'。您必須將JavaScript時間戳除以1000才能獲得秒數。 – Xotic750

+0

你說得對,這是錯誤的詞,我正在更新答案。 – ruedamanuel

0

JavaScript中的當前時間僅提供給毫秒數。如果一次生成多個文件名,則在同一操作中多次請求時可能會獲得相同的當前時間。因此,如果您想要一個完全唯一的編號(具有比當前毫秒更多的唯一性,因此您可以在緊密的循環中生成其中的一些),您可以將時間與隨機生成的值組合如下:

function makeUnique(base) { 
    var now = new Date().getTime(); 
    var random = Math.floor(Math.random() * 100000); 
    return base + now + random; 
} 

makeUnique("test"); 

工作演示:http://jsfiddle.net/jfriend00/dpZLC/

如果你想要的文件名始終是相同的位數,就可以零填充隨機數是這樣的:

function makeUnique(base) { 
    var now = new Date().getTime(); 
    var random = Math.floor(Math.random() * 100000); 
    // zero pad random 
    random = "" + random; 
    while (random.length < 5) { 
     random = "0" + random; 
    } 
    return base + now + random; 
} 
相關問題