【问题标题】:JavaScript Date not working properly in IE8 [duplicate]JavaScript日期在IE8中无法正常工作[重复]
【发布时间】:2015-06-04 11:41:04
【问题描述】:

Chrome 按预期显示结果,但 IE-8 在我执行以下操作时给出 NAN:

铬:

d = new Date("2014 12 01") // results Mon Dec 01 2014 00:00:00 GMT+0500 (Pakistan Standard Time)

IE-8:

d = new Date("2014 12 01") // results NaN undefined

【问题讨论】:

  • Date 与 jQuery 无关
  • @RohitArora:不,因为那是关于解析规范在 ES5 中添加的格式。这是关于解析随机的非标准格式。
  • 那是因为 Chrome 比 IE8 更聪明,更不严格。 “2014 12 01”几乎是正确的日期格式。尽管如此,Chrome 还是足够聪明地理解它,但严格来说,它不应该。

标签: javascript google-chrome internet-explorer


【解决方案1】:

您尝试解析的格式与the only specific format that new Date is required to parse 不匹配。要跨浏览器可靠地解析它,您需要显式解析它——要么在您自己的代码中,这可以使用正则表达式轻松完成,要么使用像 MomentJS 这样的库并告诉它格式是什么。

简单的正则表达式解决方案:

// NOTE! Uses local time.
var yourString = "2014 12 01";
var parts = yourString.match(/^(\d{4}) (\d{2}) (\d{2})$/);
if (parts) {
  var date = new Date(+parts[1], +parts[2] - 1, +parts[3]);
  alert(date.toString());
}

【讨论】:

  • + 在最后的new Date(...) 调用中有何魔力?还是多余的?
  • @spanliffe:没有魔法 :-) 它将字符串转换为数字。
  • 啊,是的(doh)它们仍然是来自 RegEx 的字符串...
猜你喜欢
  • 2019-04-10
  • 2013-12-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
相关资源
最近更新 更多