IE9 Date对象处理

时间:2012-11-02 04:00:05

标签: javascript internet-explorer datetime

我有以下行,它在FF和Chrome中生成有效的时间戳:

new Date('2012 11 2 00:00:00 GMT').getTime();

然而,在IE9中,我得到了NaN。需要采取哪些不同的方式才能使这一行与浏览器兼容?

2 个答案:

答案 0 :(得分:1)

您使用的日期格式应符合EMCAscript规范,因此Firefox和Chrome对解析更为宽容。

格式应为:

YYYY-MM-DDTHH:mm:ss.sssZ

所以试试这个:

new Date('2012-11-02T00:00:00.000Z').getTime()

这在旧版本的IE中无效。如果您需要完全兼容性,请参阅另一个答案。

答案 1 :(得分:1)

将字符串转换为日期的唯一可靠方法是手动解析它。你可以使用一个库,但无论你使用什么,你都必须知道格式,所以通常你自己更简单。

对于'2012 11 2 00:00:00 GMT'(不符合ISO8601,因此解析依赖于实现),如果时区始终为UTC,则可以使用:

function stringToDate(s) {
  var b = s.split(/\D/);
  return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]));
}

生成的日期对象将根据客户端的系统设置具有时区偏移量,该设置应该是正确的,但可能不是。