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

时间:2011-11-25 09:00:24

标签: javascript

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

当我跑步时

var timestamp = Date.parse(facebookDate);
在铬中

我得到一个与日期有关的时间戳!完美!

但在其他主要浏览器中......我得到“NaN”!!! ?

当然所有这些浏览器都使用相同的javascript解析函数吗?

有人可以解释为什么相同的javascript函数会给出不同的结果吗?

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

提前致谢

亚历

1 个答案:

答案 0 :(得分: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 note

现在也可以解析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“(带时区)尚未给出预期的结果。