Chrome和其他浏览器中的javascript date.parse差异

Ale*_*nch 16 javascript

我从graph.facebook API获取了一个日期字符串"2011-11-24T09:00:27 + 0000".

我跑的时候

var timestamp = Date.parse(facebookDate);
Run Code Online (Sandbox Code Playgroud)

在铬.我得到一个与日期有关的时间戳!完善!

但在其他主流浏览器中...我得到"NaN"!!! ?

当然所有这些浏览器都使用相同的JavaScript解析功能吗?

任何人都可以解释为什么相同的javascript函数给出不同的结果?

任何人都可以告诉我如何解决这个问题......

提前致谢

亚历克斯

mpl*_*jan 10

这是对Firefox和IE/Safari的修复(在JavaScript的帮助下:哪些浏览器支持使用Date.parse解析ISO-8601日期字符串 ):

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();
}
Run Code Online (Sandbox Code Playgroud)

来自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"(带时区)尚未给出预期的结果.