【问题标题】:Javascript Date.parse on Internet ExplorerInternet Explorer 上的 Javascript Date.parse
【发布时间】:2013-05-31 14:46:32
【问题描述】:

我有这个用于处理日期的脚本:

time = "Mon May 20 13:19:13 +0000 2013"; /// sample value
var date = new Date(Date.parse(time));
var diff = (((new Date()).getTime() - date.getTime()) / 1000);
var day_diff = Math.floor(diff / 86400);

它在 Chrome 和 Firefox 上运行良好,但在 Internet Explorer 上就不行了(我已经检查过 IE10)。任何想法我怎样才能让它工作?

(我得到的时间字符串来自 twitter 提要)。

稍后编辑:示例http://jsfiddle.net/BUv5v/3/

【问题讨论】:

  • “不好”是什么意思?
  • 做什么工作?问题是什么?什么不工作?
  • IE 中的日期存在记录问题:stackoverflow.com/questions/3020508/…
  • 在 Chrome 和 IE 中打开此链接:jsfiddle.net/BUv5v/3
  • 你为什么还要使用Date.parse()?它只需将字符串传递给构造函数即可工作。

标签: javascript internet-explorer


【解决方案1】:

Date.parse()will not parse 在 IE 中以 Tue Dec 05 2006 16:47:20 GMT-0500 这种格式的日期。

一种解决方法是使用this function 在两个浏览器中解析该格式:

function parseDate(str) {
    var v = str.split(' ');
    return new Date(Date.parse(v[1] + " " + v[2] + ", " + v[5] + " " + v[3] + " UTC"));
}

因此,结束代码将是:

time = "Mon May 20 13:19:13 +0000 2013"; /// sample value
var date = parseDate(time);                     // <---------------- changed here
var diff = (((new Date()).getTime() - date.getTime()) / 1000);
var day_diff = Math.floor(diff / 86400);

测试小提琴(在 Chrome 27、Firefox 13 和 IE 9 中测试)http://jsfiddle.net/R3Ez9/

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多