javascript中日期函数new Date()的浏览器兼容性问题


Posted in Javascript onSeptember 05, 2015

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

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

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

2.  问题分析

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

var timestart = '2010-05-04';
var timeend = '2015-09-05';
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下的执行情况:

  javascript中日期函数new Date()的浏览器兼容性问题

 在Firefox下的执行情况:

  javascript中日期函数new Date()的浏览器兼容性问题  在Chrome下的执行情况:

   javascript中日期函数new Date()的浏览器兼容性问题

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

4. 正确的做法

以下列出正确的做法:

var time1 = (timestart+' 00:00:00').toString();
 var time2 = (timeend+' 23:59:59').toString();
 timestart = new Date(Date.parse(time1.replace(/-/g,"/"))).getTime();
 timeend = new Date(Date.parse(time2.replace(/-/g,"/"))).getTime();

主要的变化是对默认的日期格式进行了转换, 基于'/'格式的日期字符串,才是被各个浏览器所广泛支持的,‘-'连接的日期字符串,则是只在chrome下可以正常工作。

5. 知识点总结

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

Javascript 相关文章推荐
JQuery实现图片轮播效果
Sep 15 Javascript
JavaScript图像延迟加载库Echo.js
Apr 05 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
js模式化窗口问题![window.dialogArguments]
Oct 30 Javascript
bootstrap table使用入门基本用法
May 24 Javascript
利用types增强vscode中js代码提示功能详解
Jul 07 Javascript
vue树形结构获取键值的方法示例
Jun 21 Javascript
vue升级之路之vue-router的使用教程
Aug 14 Javascript
JS异步错误捕获的一些事小结
Apr 26 Javascript
Angular8路由守卫原理和使用方法
Aug 29 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
vue proxy 的优势与使用场景实现
Jun 15 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 #Javascript
javascript 判断两个日期之差的示例代码
Sep 05 #Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 #Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 #Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
Sep 04 #Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
Sep 04 #Javascript
JS实现先显示大图后自动收起显示小图的广告代码
Sep 04 #Javascript
You might like
PHP新手上路(七)
2006/10/09 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
php中的常用魔术方法总结
2013/08/02 PHP
php反射应用示例
2014/02/25 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
PHP递归的三种常用方式
2019/02/28 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
js实现3D旋转效果
2020/08/18 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
python 七种邮件内容发送方法实例
2014/04/22 Python
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
Python join()函数原理及使用方法
2020/11/14 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
党在我心中的演讲稿
2014/09/13 职场文书
优秀班主任申报材料
2014/12/16 职场文书
初中教师个人总结
2015/02/10 职场文书
父亲节活动总结
2015/02/12 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
Jsonp劫持学习
2021/04/01 PHP
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript