使用new Date() 在ios、及不同浏览器上的适配

以前new Date()都是放心大胆用的,结果今天在项目上遇到一个在ios上不兼容的问题....

var min_date = '2018-9-1';

var min_timestamp = new Date(min_date).getTime();  //在ios下会报Invalid Date错误

.....................

var min_date =  '2018/9';

var min_timestamp = new Date(min_date).getTime();  //在ios下也会报Invalid Date错误的

 

低版本的Safari解释new Date('2013-10-21')这个对象不一样,在IOS5中的Safari不支持这种写法。

经过相关查询与试验发现字符串的格式同样不被某些浏览器识别,导致出现 Invalid Date、NaN-NaN

浏览器都能识别的格式:

var d = new Date(2011, 01, 07); // yyyy, mm-1, dd

var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss

var d = new Date("02/07/2011"); // "mm/dd/yyyy"

var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"

var d = new Date(1297076700000); // 毫秒

var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UT

 

最后解决:

做了正则匹配,用/格式的日期是所有浏览器都识配的,在只有月份的时候拼上了‘/1’

var min_timestamp = new Date(min_date.replace(/-/g,'\/')).getTime();

转载于:https://www.cnblogs.com/bber/p/9683310.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值