js 实例化 Date 对象需要注意的问题

上周做了个小功能,里面涉及到用 js 计算时间差的处理。


先取两个控件输入的值,实例化了两个 Date 对象,然后计算两个对象的时间差。

在实例化 Date 对象这个环节,发现 Safari 返回的 .getTime() 不是毫秒数而是 NaN。


原来控件的时间字符串的格式为:yyyy-MM-dd HH:mm:ss

Safari 对这种格式的时间字符串实例化为 Date 对象时会出错。经测试,IE 11 下也不支持这种格式实例化 Date 对象。


解决方案,就是把字符串中的“-”替换为“/”即可。

即 Safari 能够支持的时间字符串格式为:yyyy/MM/dd HH:mm:ss

此格式在 Chrome / IE / FireFox 下也支持。


问题解决。


替换“-”的方式,网上多是用正则 replace 的方式,如:

'yyyy-MM-dd HH:mm:ss'.replace(/-/g, '/')