JS关于ie浏览器new Date传参报错的问题的解决

最近在做项目时遇到一个奇葩的问题,就是我获得一个时间字符串,然后通过new Date()方法创建时间来比较大小。具体如下:

var tjssvalue = ((new Date(qjsj)-new Date(tjsj))/( 60 * 60 * 1000)).toFixed(4)

做的时候,在谷歌浏览器上跑的好好的,结果到ie上测试的时候就出问题了,
new Date(qjsj)会报NAN的错。在网上找了一下,大多都是要把时间分割成数据,在转成时间,如:
var date = new Date();
date.setUTCFullYear(str[0], str[1] - 1, str[2]);
date.setUTCHours(0, 0, 0, 0);

但是本人感觉这个方法有点麻烦,而且更主要的是哥的时间串是有时间的,这样做非常麻烦,所以继续找
,结果功夫不负有心人啊,终于等到你。
废话少说,代码如下,这是我对一些时间在ie下的测试:
代码:
alert(new Date("2014-11-11 15:59:59"));
alert(new Date("2014-11-11"));
alert(new Date("2014/11/11 15:59:59"));
alert(new Date("2014/11/11"));
结果:
ie8:
https://img-blog.csdn.net/20141127201223847?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTUwMTU3NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" 



 
   ie11: 
  
 
  




由此可见,主要还是时间格式的问题。
最后,我的解决方法:
var tjsj = tjsjvalue.replace(/(\d{4})-(\d{2})-(\d{2}) (.*)/, "$1/$2/$3 $4")
var qjsj = qjsjvalue.replace(/(\d{4})-(\d{2})-(\d{2}) (.*)/, "$1/$2/$3 $4")
var tjssvalue = ((new Date(qjsj)-new Date(tjsj))/( 60 * 60 * 1000)).toFixed(4);
最最后,说一句题外话:ie果然是一个神奇的浏览器!


 
  

你可能感兴趣的:(js)