介绍一个可以解决Date对象的浏览器兼容问题的简单方法。javascript
Date在不一样浏览器中对于传入的时间字符串的格式要求是不同的。好比在chrome浏览器的控制台中输入如下内容,会获得相应结果:java
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对于'-'和'/'分割日期的形式都是支持的,可以返回正确的毫秒数或者时间格式。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不支持'-'分割日期的时间字符串。iphone
下面是一个比较好的解决方案:code
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-chromeip
http://stackoverflow.com/questions/5324178/javascript-date-parsing-on-iphone字符串