Home / Blog / bugs

JS 指定日期转换时间戳问题

Author: Vic.Wang 2015/07/13 Tags:DategetTimeNaN日期转换

今天踩到一个坑,之前写的一个倒计时效果,在 Chrome 里面正常后就没管了,后来测试告诉我,在 iPhone 上倒计时有问题,倒计时变成NaN分NaN秒了。

由于这是个HTML5的Web页面,是嵌入到 IOS 和 Android 的APP里面的,首先排查在 Android 上是好的,因为代码是同一套,出现NaN说明问题出在日期转换上。

继续排查,后端返回的数据 endTime 是一个字符串的时间2015-07-08 23:59:59

代码里面直接用了new Date(endTime).getTime()转换时间戳,下了个Safari浏览器,发现时间戳变成了NaN,换成IE发现也有这个问题。

问题搞清楚了,就解决吧。

想着可能是时间格式问题,导致部分浏览器解析不了,将时间字符串的-改为了/,解析出来正常。

时间是后端取回来的,所以还需要自己替换一下。

关键代码:

        var endTime = '2015-07-08 23:59:59';

        endTime = endTime.replace(/\-/g, '/');

        endTime = new Date(endTime).getTime();
                    

注意:指定一个具体的时间转换时间戳,需要yyyy/mm/dd hh:ii:ss格式,yyyy-mm-dd在IE和Safari下是有问题的。