使用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();