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(...

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

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

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

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

js中new Date(string)在IE不兼容报错:显示NaN,chrome没问题

js中new Date(string)在IE不兼容报错:显示NaN,chrome没问题 解决方案:将-替换成/ var beginDate = $(this).find(".adTimeStart")...

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

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

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

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

new Date 在IE 下 兼容性的问题

问题 : new Date(string) 在IE下不兼容,返回NaN 解决办法: :用 new Date(year,month,day,hour,minute,millseconds) ...

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

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

JavaScript中的Date对象在Safari与IOS中的“大坑”

最近小编在做一个会议室预定的功能,这个功能就像在买电影票时选择座位一样,看看会议室的哪个时间段空闲,有什么设备等等。由于我做的是APP,APP既要兼容Android,又要兼容IOS,刚开始的开发与调试...

ios中safari不兼容JavaScript中Date转化为时间戳的问题

在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在ios上缺不能正常显示,显示的时间为:NaN-NaN1-NaN  Invalid Date,捣鼓了好...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript中new Date()的浏览器兼容性问题
举报原因:
原因补充:

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