2011-11-25 111 views
14

我有一個從graph.facebook API獲取的日期字符串「2011-11-24T09:00:27 + 0000」。在Chrome和其他瀏覽器中的javascript date.parse差異

當我運行

var timestamp = Date.parse(facebookDate); 

。我得到一個與日期相關的時間戳!完善!

但是在其他各大瀏覽器中......我得到「NaN」! ?

當然,所有這些瀏覽器使用相同的JavaScript解析功能嗎?

任何人都可以解釋爲什麼相同的JavaScript函數會給出不同的結果嗎?

而且可以有人還告訴我如何解決這個問題?

在此先感謝

亞歷

+0

請參閱自第一次以來更新的腳本添加了偏移量而不是減去它 – mplungjan

+5

」當然,所有這些瀏覽器都使用相同的javascript解析函數是否正確?「否歡迎使用Web Development。 – user123444555621

+0

@Alex - 是否總是+0000,因爲這樣我們就可以將其更改爲Z – mplungjan

回答

10

這裏是Firefox和IE/Safari瀏覽器(一個修復與JavaScript: Which browsers support parsing of ISO-8601 Date String with Date.parse幫助 ):

DEMO

var noOffset = function(s) { 
    var day= s.slice(0,-5).split(/\D/).map(function(itm){ 
    return parseInt(itm, 10) || 0; 
    }); 
    day[1]-= 1; 
    day= new Date(Date.UTC.apply(Date, day)); 
    var offsetString = s.slice(-5) 
    var offset = parseInt(offsetString,10)/100; 
    if (offsetString.slice(0,1)=="+") offset*=-1; 
    day.setHours(day.getHours()+offset); 
    return day.getTime(); 
} 

MDN

的JavaScript 1.8.5注

ISO 8601格式的日期字符串的一個子集,現在也可以被解析。

或者,日期/時間字符串可以採用ISO 8601格式。從JavaScript 1.8.5/Firefox 4開始,支持ISO 8601的一個子集。例如,可以傳遞和解析「2011-10-10」(僅限日期)或「2011-10-10T14:48:00(日期和時間)」。ISO日期中的時區尚未支持,例如「2011- 10-10T14:48:00 + 0200「(帶時區)還沒有給出預期的結果

+1

美麗而完美,非常感謝您的支持 – Warpling

+1

非常感謝你mplungjan,你拯救了我的一天! – avenet

相關問題