【问题标题】:javascript date.parse difference in chrome and other browsersjavascript date.parse在chrome和其他浏览器中的区别
【发布时间】:2011-11-25 09:00:24
【问题描述】:

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

当我跑步时

var timestamp = Date.parse(facebookDate);

镀铬。我得到一个与日期相关的时间戳!完美!

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

肯定所有这些浏览器都使用相同的 javascript 解析函数吧?

谁能解释为什么同一个 javascript 函数会给出不同的结果?

还有谁能告诉我如何解决这个问题...

提前致谢

亚历克斯

【问题讨论】:

  • 请查看更新的脚本,因为第一个脚本添加了偏移量而不是减去它。
  • “肯定所有这些浏览器都使用相同的 javascript 解析函数吧?”不,欢迎来到 Web 开发。
  • @Alex - 是否总是 +0000,因为那样我们就可以将其更改为 Z

标签: javascript


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多