javascript date.parse在chrome和其他浏览器中的区别

标签 javascript

我有一个从 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 的帮助下) ):

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

关于javascript date.parse在chrome和其他浏览器中的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266710/

相关文章:

javascript - 使用 mailto : won't fill subject field 发送电子邮件

javascript - JS 用 if 检查返回函数,总是返回 false

javascript - 在 JavaScript 中按 Intl.NumberFormat 格式化百分比

javascript - 在 Javascript 中比较值与前导零

javascript - 在 'for' 循环迭代之间添加延迟

javascript - 使用 javascript 和 ajax 选项创建 select html

javascript - 无法使用 document.body.appendChild 附加 javascript

javascript - HTML 服务器状态检查器

javascript - jQuery "not"方法和选择器在 body 元素上工作时遇到问题

javascript - 无法在 DIV 中打开页面