javascript中new Date()的浏览器兼容性问题

原创 2015年04月06日 17:58:40

引言: 同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异。本文将基于new Date来创建Date对象来分析这个问题。

1.  问题的提出, 开始时间和结束时间空间无法正确的传递值

    在页面中,我们使用了一个时间上的组件来开发时间选择框,但是发现在Firefox下是无法正常工作的,在Chrome下是可以正常运行的。 问题出在哪里呢?

2.  问题分析

    结果分析发现是由于如下代码产生的问题:  

var timestart = '2010-05-04';
var timeend = '2015-04-01';
var time1 = (timestart+' 00:00:00').toString();
var time2 = (timeend+' 23:59:59').toString();
timestart = new Date(time1);
timeend = new Date(time2);

  问题就在于 new Date(time1)这个构造函数无法正确的生成Date对象,其值为NaN. 怪哉,问题在哪里呢?

3. 各个浏览器上的表现

  在IE下的执行情况:

  

 在Firefox下的执行情况:

    在Chrome下的执行情况:

   

    通过以上的分析,可以得知,这个javascript的脚本在Chrome下是可以正确执行的,但是在其他浏览器下报出错误。

4. 正确的做法

   以下列出正确的做法:

 var time1 = (timestart+' 00:00:00').toString();
 var time2 = (timeend+' 23:59:59').toString();
 timestart = new Date(Date.parse(str.replace(/-/g,"/"))).getTime();
 timeend = new Date(Date.parse(str.replace(/-/g,"/"))).getTime();
  主要的变化是对默认的日期格式进行了转换, 基于'/'格式的日期字符串,才是被各个浏览器所广泛支持的,‘-’连接的日期字符串,则是只在chrome下可以正常工作。

5. 知识点总结

   '2015-05-04'是无法被各个浏览器中,使用new Date(str)来正确生成日期对象的。 正确的用法是'2015/05/05'.  

Date.parse()兼容性问题

js中,firefox和IE对于协调通用时间 (UTC) 和格林威治标准时间 (GMT),支持程度比较低,以至于Date.parse(date)会出现NaN的情况,参考点击打开链接,用replace(...
  • acinblue
  • acinblue
  • 2017年03月06日 11:13
  • 1182

Date.parse和new Date(str)的兼容性问题

今天遇到一个怪异的BUG, 一路跟踪到isNaN(Date.parse(str))这句上,询问同事后得知这里的意图是探测str是否是合法的日期字符串。根据MDN的定义: The Date.parse...
  • fanhu6816
  • fanhu6816
  • 2016年11月22日 17:49
  • 2145

解决IE不支持Data.parse()的问题

IE不能识别JS函数Date.parse的解决方法  ,当我们用JS计算两个时间的间隔时,我们会用到Date.parse 这个JS函数。 如: var begintime = "2012-12...
  • RolaMao
  • RolaMao
  • 2013年01月17日 13:58
  • 7326

关于javascript中的Date.parse()函数与火狐浏览器的兼容问题

Date.parse(dateVal)     这个方法是很常用的,比如在验证输入日期是否存在时,可以使用它,如果是一个不存在的日期,则其返回值将是NaN,另外如果要比较两个日期的先后,或是计算两个...
  • u012439957
  • u012439957
  • 2014年09月01日 13:34
  • 1222

new Date()设置日期在IOS的兼容问题

new Date()在ios的兼容问题
  • huangxin112
  • huangxin112
  • 2017年08月11日 14:37
  • 406

关于 safari浏览器 不支持new Date 显示NaN的问题记录

知识点:new Date问题: safari浏览器 显示 NaN因为 JS中要求Date类型转换的原始数据格式是yyyy/mm/dd之类的,所以横岗 - 要替换掉才可以今天同事来问,我一看果然啊,ma...
  • xllily_11
  • xllily_11
  • 2017年02月08日 17:46
  • 2506

关于IE11不能new date,转换时间的方法

//格式化日期 function FormatDate(strTime){ //这里的 strTime = "2017-03-31 11:42:00"; // IE11里面不能直接转换带"-...
  • hcmony
  • hcmony
  • 2017年03月31日 11:48
  • 1973

javascript Date() 浏览器兼容问题解决

在平常系统中时间的显示格式为:2016-07-20 12:21:12,但是这种时间格式不被IE等浏览器格式所识别,必须将时间格式中的”-“替换为”/”,如:2016/07/20 12:21:12,才是...
  • chq00788
  • chq00788
  • 2016年07月20日 15:02
  • 793

ie不支持 date()带参数方法解决办法

1、ie浏览器不支持date()带参数的方法,那么在转换时间格式为“2016-08-22  08:22:34”格式的字符串时,做一下处理: /**  * IE浏览器不支持date(time),所以用...
  • u010321537
  • u010321537
  • 2016年08月22日 10:52
  • 1402

关于new Date()方法在IE8下面无效的解决办法

1. 如果获取两个日期差是需要Date( )方法的,最近发现Date()方法在IE8下并不友好,存在一些兼容性的问题。 下面介绍方法,计算两个日期差 //计算日期差函数,兼容IE8 fun...
  • ChauncyWu
  • ChauncyWu
  • 2017年08月22日 13:30
  • 795
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript中new Date()的浏览器兼容性问题
举报原因:
原因补充:

(最多只允许输入30个字)