我有一个从 graph.facebook API 获取的日期字符串“2011-11-24T09:00:27+0000”。
当我运行时
var timestamp = Date.parse(facebookDate);
Chrome 。我得到一个与日期相关的时间戳!完美!
但是在所有其他主流浏览器中...我得到“NaN”!!! ?
肯定所有这些浏览器都使用相同的 javascript 解析函数吧?
谁能解释为什么相同的 javascript 函数会产生不同的结果?
还有谁能告诉我如何解决这个问题...
提前致谢
亚历克斯
最佳答案
这是针对 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 注意事项
现在还可以解析 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"(带时区)尚未给出预期结果。
关于javascript date.parse在chrome和其他浏览器中的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266710/