上周做了个小功能,里面涉及到用 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, '/')