`

IE、火狐浏览器下JS的new Date()的值为Invalid Date、NaN - js经典问题(高级篇)

阅读更多

【问题现象】:

    当我们需要将一串日期字符串转换为具体的Date格式的时候,往往需要用到new Date("yyyy-mm-dd hh:mm:ss")方法,在IE、火狐浏览器下,会遇到这种问题:

 

new Date('2017-01-20 00:00:00')    //却返回这个值Invalid Date,转换失败

 

但是这个方法却在谷歌浏览器上可以返回正确的结果。

 

【原因分析】:

      不同的浏览器对不同时间格式还是存在差异的,以下列出了所有浏览器都支持的方式:

 

var d = new Date(2017, 01, 07);
var d = new Date(2017, 01, 07, 11, 05, 00);
var d = new Date("01/07/2017"); 
var d = new Date("01/07/2016 11:05:00");
var d = new Date(1297076700000); 
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); 

 

【解决方案】:

      使用正则表达式转换格式即可或者后台传值到前台来的时候专正确格式即可:

 

new Date('2017/01/20 00:00:00');

 

var date="2017-01-20 10:10:10";
date=date.replace(new RegExp(/-/gm) ,"/");   //将所有的'-'转为'/'即可
Date d=new Date(date);

 

 

 

 

 

 

 

捐助分享者

          以前并不喜欢编程,但是现在已经是一个为程序而痴迷的IT迷,在此分享一些自己整理并优化后的东西,希望能给IT迷们有所帮助,有欣喜,也还有汗水,同时也希望大家能支持一下。 当然,有钱捧个钱场(支持支付宝和微信捐助,加入it资料中心扣扣群),没钱捧个人场,有了大家的支持,我们会更有动力,会做的更好的,谢谢各位。

 

 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics