我从graph.facebook API获取了一个日期字符串“2011-11-24T09:00:27 + 0000”。
当我跑步时
var timestamp = Date.parse(facebookDate);
在铬中我得到一个与日期有关的时间戳!完美!
但在其他主要浏览器中......我得到“NaN”!!! ?
当然所有这些浏览器都使用相同的javascript解析函数吗?
有人可以解释为什么相同的javascript函数会给出不同的结果吗?
任何人都可以告诉我如何解决这个问题......
提前致谢
亚历
答案 0 :(得分:10)
这是针对Firefox和IE / Safari的修复程序(在JavaScript: Which browsers support parsing of ISO-8601 Date String with Date.parse的帮助下 ):
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“(带时区)尚未给出预期的结果。