js Date()日期函数浏览器兼容问题解决方法

一般 直接new Date() 是不会出现兼容性问题的,而 new Date(datetimeformatstring) 常常会出现浏览器兼容性问题,为什么,datetimeformatstring中的某些格式浏览器不兼容。

1. 无参

//无参 所有浏览器都兼容
var dateTime = new Date();

2.日期参数

//日期参数 格式1
var dateTime = new Date("2017-09-12");

a. IE

  > IE9-(不兼容) 

  > IE9+(兼容,包含IE9)

b. 火狐(兼容)

c. 谷歌 (兼容)

//日期参数 格式2 所有浏览器都兼容
var dateTime = new Date("2017/09/12");

3.日期时间参数

//日期时间参数 格式1
var dateTime = new Date("2017-09-12 13:41:00");

a. IE    (不兼容,不管哪个版本)

b. 火狐 (不兼容)

c. 谷歌 (兼容)

//日期时间参数 格式2 所有浏览器都兼容
var dateTime = new Date("2017/09/12 13:42:00");
//日期时间参数 格式3
var dateTime = new Date("2017-09-12T13:42:00");

a. IE

  > IE9- (不兼容)

  > IE9+(兼容)

  > IE9(半兼容 8个小时时间差)

b. 火狐 (兼容)

c. 谷歌 (半兼容 8个小时时间差)

//日期时间参数 格式4
var dateTime = new Date("2017/09/12T13:42:00");

a. IE    (半兼容 1小时时间差)

b. 火狐 (不兼容)

c. 谷歌 (不兼容)

综上,所有主流浏览器都支持的格式为: var dateTime = new Date("2017/09/12 13:42:00");

那么解决方案就是 将datetimeformatstring 转换成 yyyy/MM/dd hh:mm:ss 格式化字符串即可

时间: 2017-09-11

IE8兼容Jquery.validate.js的问题

只需在jquery.validate.js 文件中 在446行附近找到 return $([]).add(this.currentForm.elements).filter(":input") 更换成 var listeElements = new Array(); for(var k=0;k<this.currentForm.elements.length;k++){ listeElements[k] = this.currentForm.elements[k]; } retu

JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)

IE中new Date(strDate)返回无效时间解决方式: 方法一: function getDateForStringDate(strDate){ //切割年月日与时分秒称为数组 var s = strDate.split(" "); var s1 = s[0].split("-"); var s2 = s[1].split(":"); if(s2.length==2){ s2.push("00"); } return

JavaScript自定义DateDiff函数(兼容所有浏览器)

复制代码 代码如下: <script type="text/javascript"> function NewDate(str) { str = str.split('-'); var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours(0, 0, 0, 0); return date; } function TimeCom(dateValue) { var

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

同一种语言javascript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异.本文将基于new Date来创建Date对象来分析这个问题. 1.  问题的提出, 开始时间和结束时间空间无法正确的传递值 在页面中,我们使用了一个时间上的组件来开发时间选择框,但是发现在Firefox下是无法正常工作的,在Chrome下是可以正常运行的. 问题出在哪里呢? 2.  问题分析 结果分析发现是由于如下代码产生的问题: var timestart = '20

JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决

var date = new Date('2016-11-11 11:11:11'); document.write(date); 最近在写一个时间判断脚本,需要将固定好的字符串时间转换为时间戳进行比较,在做的时候个人习惯使用chrome作为调试工具,代码基本完成之后,一切正常: 使用其他浏览器访问,好嘛,IE跟safari都不兼容,返回错误"Invalid Date". 想着估计是字符串格式的问题,改成'2016/11/11 11:11:11'再测试,结果正常,以为这样应该没问题了,

iphone的safari浏览器中实现全屏浏览的方法

正常情况下,当你用手机浏览器打开网页时,导航就停留在上面,这样实际展示的屏幕就变小了.那能不能加载后,屏幕就自动全屏呢?这就是本文要讨论的. Add to Home Screen 说到全屏不得不谈iPhone下的safari有一个特别且重要的功能就是"Add to Home Screen".(就在Safari浏览器最下方,最中间的那个位置,点击选择即可)这个功能类似于把网页地址作为一个超链接的方式放到手机桌面,并且可以直接访问.不过要注意的是每个链接都需要js进行一次特殊处理,那就是监

javascript实现阻止iOS APP中的链接打开Safari浏览器

上次根据网上的教程给自己的网站弄了一个Web APP,但是给用户的感觉却十分糟糕. 问题说明: 怎么了?原来是打开WEB APP后在主页上随意打开连接,就会自作主张地打开Safari浏览器.原来好好的伪装和心情就全被破坏掉了.这该如何是好?原来解决方法十分简单.仅仅加入这些代码就好了.实验测试在本人的 iPhone (iOS 7.1)和iPod (iOS 6.1.4)上测试通过,根据原作者的叙述,最新的 iOS 7.0.4(iPhone 与 iPad)测试通过,代码应该兼容性不错,在这里分享:

使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)

WEB开发中如何通过Javascript来判断终端为PC.IOS(iphone).Android呢? 可以通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端. var u = navigator.userAgent; isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端 isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS

JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)

目前,如果使用javascript来写复制到剪贴板的代码,一般都是浏览器不兼容的.所以采用flash的方式,模拟一个层,再来复制,就可以做到全部浏览器都适用哦~ 需要下载一个swf文件,和一个js文件.把这两个文件,和htm放到一起. 图示: 必须放在服务器端使用哦. 图示: JS代码: 复制代码 代码如下: ZeroClipboard.js // Simple Set Clipboard System // Author: Joseph Huckaby var ZeroClipboard =

JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)

两天前听了一个H5的分享,会议上有一句话,非常有感触:不是你不能,而是你对自己的要求太低.很简单的一句话,相信很多事情不是大家做不到,真的是对自己的要求太低,如果对自己要求多一点,那么你取得的进步可能会更大.成长以来,很多朋友也听说到不少激励自己上进的话,但不是每个人都能一直坚持做下来,其实,这个跟自己的性格以及周围的环境都有很大关系,只能说多找方法.条件给自己鼓励,不断提高对自己的要求,才有机会获得多一点的成就. 今年下半年打算在组内建个叫『移动开发指南』的站点,在网站框架搭建过程,有一个功能

JS中Safari浏览器中的Date

在js中处理Date时,发现Safari和其他浏览器的支持方式不一致 1.例如:2017-01-01 12:00:00 在其他浏览器中,使用这个格式的字符串进行new Date操作没有问题,但是在Safari中会提示Invalid Date; Safari中不支持'-'格式的日期字符串,将其替换成'/' 变成2017/01/01 12:00:00即可正常使用 2.例如:2017/01/01T11:00:00 此格式的日期字符串在Safari中也是不得到支持的,需要将字符串中的'T'   替换成空

JS判断是否在微信浏览器打开的简单实例(推荐)

最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去.在分享页面上提供公司APP的下载.但是在很多应用的浏览器中,点击下载链接无法下载应用.那么针对这些浏览器我们需要给用户提示从safari或者系统自带的浏览器打开分享页面.通过js就可以判断当前页面是在什么浏览器打开的. 以下是一段示例代码,注释中表明了通过JS如何判断是否在微信浏览器打开,是否在QQ空间浏览器,是否在新浪微博打开.当然可以做得更完善一点,再加上判断是在移动设备打开还是在PC端浏览器打开的,更加细分一点,可以判断是

使用js检测浏览器是否支持html5中的video标签的方法

复制代码 代码如下: //检测是否支持HTML5function checkVideo() {    if (!!document.createElement('video').canPlayType) {        var vidTest = document.createElement("video");        oggTest = vidTest.canPlayType('video/ogg; codecs="theora, vorbis"');  

js停止冒泡和阻止浏览器默认行为的简单方法

停止冒泡通用方法: function stopBubble(e) { //如果提供了事件对象,是非IE浏览器 if ( e && e.stopPropagation ) //使用W3C的stopPropagation()方法 e.stopPropagation(); else //使用IE的cancelBubble = true来取消事件冒泡 window.event.cancelBubble = true; } 阻止浏览器默认行为-通用方法 //阻止浏览器的默认行为 function s