Date对象的浏览器兼容性问题

引见一个能够处理Date对象的浏览器兼容问题的简朴要领。

new Date()、Date.parse()要领在浏览器中的兼容性问题

Date在差别浏览器中关于传入的时候字符串的花样要求是不一样的。比如在chrome浏览器的掌握台中输入以下内容,会获得响应效果:

Date.parse('2015-11-11 00:00:00')
//->1447171200000
Date.parse('2015/11/11 00:00:00')
//->1447171200000
new Date('2015-11-11 00:00:00')
//->Wed Nov 11 2015 00:00:00 GMT+0800 (CST)
new Date('2015/11/11 00:00:00')
//->Wed Nov 11 2015 00:00:00 GMT+0800 (CST)

能够发明,chrome关于’-‘和’/’支解日期的情势都是支撑的,能够返回准确的毫秒数或许时候花样。

下面在safari浏览器中输入雷同内容,检察对应效果:


> Date.parse('2015-11-11 00:00:00')
< NaN = $1
> Date.parse('2015/11/11 00:00:00')
< 1447171200000 = $2
> new Date('2015-11-11 00:00:00')
< Invalid Date = $3
> new Date('2015/11/11 00:00:00')
< Wed Nov 11 2015 00:00:00 GMT+0800 (CST) = $4

能够发明,safari仅对’/’支解日期的情势支撑,对’-‘支解日期的情势并不支撑。

经由过程以上试验,我们能够视察出chrome和safari关于差别花样的时候字符串的支撑状况。chrome同时支撑’-‘和’/’支解日期的时候字符串;safari不支撑’-‘支解日期的时候字符串。

一个简朴有用的处理要领

下面是一个比较好的处理方案:

var arr = "2010-03-15 10:30:00".split(/[- / :]/),
    date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
  
  console.log(date);
  //-> Mon Mar 15 2010 10:30:00 GMT+0000 (GMT Standard Time)

该要领为先将时候字符串用split要领举行支解拼装为一个数组,再将每一个数组的项作为传参传入new Date()要领,从而将差别情势的字符串转换成有用的时候。
该要领关于一切浏览器见效。

博客文章地点:http://joebon.cc/date-cross-browser-safari-chrome

参考资料:

http://stackoverflow.com/questions/5324178/javascript-date-parsing-on-iphone

    原文作者:Joebon
    原文地址: https://segmentfault.com/a/1190000005139683
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞