在写小程序时,发现一个神奇的bug,就是Date.parse()获取的时间戳IOS不兼容,显示为NaN。
平常像下面这么写,例如:
var timeStr0 = '2018-6-21';
var timeStr1 = '2018-06';
var timeStr3 = '2018-6';
var timeStr2 = '2018-06-21 23:59:59';
var timeStamp0 = Date.parse(timeStr0) / 1000;
console.log("timeStamp0:" + timeStamp0); //1529510400
var timeStamp1 = Date.parse(timeStr1) / 1000;
console.log("timeStamp1:" + timeStamp1); //1527811200----是2018/6/1 8:0:0时间戳
var timeStamp3 = Date.parse(timeStr3) / 1000;
console.log("timeStamp3:" + timeStamp3); //1527782400---是2018/6/1 0:0:0时间戳
var timeStamp2 = Date.parse(timeStr2) / 1000;
console.log("timeStamp2:" + timeStamp2); //1529596799
但是到了ios版本里面,时间戳都变成了NaN,安卓版本和微信开发者工具中显示正常。
问度娘了一会儿之后,发现因为ios只识别"2017/01/01"这样的日期格式;所以,解决办法如下:(用正则把“-”替换成“/”)
var timeStr = '2018-06-21';
var timeStamp = Date.parse(timeStr.replace(/-/g, '/'))/1000;
console.log("timeStamp:" + timeStamp);
总结:尽量还是要用"2017/01/01"这样的日期格式来转时间戳,避免了兼容问题,同时也避免掉了'2018-6'与'2018-06'转时间戳不同的问题。