2011-11-25 50 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

相关问题