2012-05-09 25 views
1

我是否錯誤地實現了setUTCMilliseconds?對於我輸入的任何值,我都會得到錯誤的日期。下面只是一個錯誤值的例子。我所有的測試數據都是在JS中的5月24日(未來的未來)解決,但在C#或使用快速在線轉換工具中,我的UTS MS是正確的。javascript setUTCMilliseconds是錯誤的?否則,我錯了

有什麼想法?

function parseDate(epoch) { 
    var d = new Date(); 

    //tried this too, but it shows me the actual epoch 1970 date instead 
    //var d = new Date(0); 

    //EDIT: this should be seconds in combination with Date(0) 
    d.setUTCMilliseconds(parseInt(epoch)); 

    return d.toString(); 
} 

// 1336423503 -> Should be Mon May 07 2012 13:45:03 GMT-7 

// javascript says 
Thu May 24 2012 05:03:21 GMT-0700 (Pacific Daylight Time) 
+1

你傳遞的價值不是一個時代,它是自**時代以來的時間**。 – RobG

+0

是的,我明白數字的含義。我在這裏使用它像epochtime – FlavorScape

回答

2

從一個類似的問題:

var utcMilliseconds = 1234567890000; 
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch 
d.setUTCMilliseconds(utcMilliseconds); 

Convert UTC Epoch to local date with javascript

+0

是的,我試過了,它只是顯示了我在1970年的時代日期。 – FlavorScape

+0

啊,好吧,確實需要0,但沒有注意到它的秒,而不是ms。 – FlavorScape

+0

由於時間以秒爲單位傳遞,您可以這樣做:'d.setUTCSeconds(seconds,0)' – RobG

1

要轉換UTC時間,以秒爲本地日期的對象:

function makeUTC(secs) { 
    return new Date(Date.UTC(1970,0,1,0,0, secs, 0)); 
} 

注意,時代爲1970-01-01T00:00:00.0Z

1

只需使用Date()構造與毫秒作爲一個數字:

> new Date(1336423503 * 1000) 
2012-05-07T20:45:03.000 

有沒有必要以後創建一個Date對象和setUTCMilliseconds。

相關問題