我有以下行,它在 FF 和 Chrome 中生成一个有效的时间戳:
new Date('2012 11 2 00:00:00 GMT').getTime();
但是,在 IE9 中,我得到了 NaN。要使这条线与跨浏览器兼容,需要做些什么不同的事情?
我有以下行,它在 FF 和 Chrome 中生成一个有效的时间戳:
new Date('2012 11 2 00:00:00 GMT').getTime();
但是,在 IE9 中,我得到了 NaN。要使这条线与跨浏览器兼容,需要做些什么不同的事情?
将字符串转换为日期的唯一可靠方法是手动解析它。您可以使用库,但无论您使用什么,都必须知道格式,因此自己动手通常会更简单。
对于“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]));
}
生成的日期对象将具有基于客户端系统设置的时区偏移量,这应该是正确的,但可能不正确。
您使用的日期格式应该符合 EMCAscript 规范,恰好 Firefox 和 Chrome 对解析更宽容。
格式应为:
YYYY-MM-DDTHH:mm:ss.sssZ
所以试试这个:
new Date('2012-11-02T00:00:00.000Z').getTime()
这在旧版本的 IE 中不起作用。如果您需要完全兼容,请参阅其他答案。