很多人知道如下寫法來兼容蘋果瀏覽器,但是其實這個寫法也是有問題的
function praseTime(time){
let date = new Date(time.replace(/-/g,'/'))
return date;
};
因爲 像這樣的時間格式 2009-12-28T00:00:00.000+00:00 用/替換-後,是無法再轉換爲Date的。
如圖
最後還有一個坑 date == 'Invalid Date'是不全面的,有時候date會NaN;我現在無法重現了。但是調試代碼中的確遇到過這個辛苦
date = new Date(time)
if (date == 'Invalid Date') return time;// date == 'Invalid Date'是不全面的,有時候date會NaN
最後給一個非常完美的字符串轉Date對象的函數
//字符串轉Date
function parseDate(time) {
if (!time) {
return {};
}
if (time instanceof Date) {
return time;
}
if (typeof time !== "string") {
return {};
}
let date = new Date(time);
if (date.getDay() === "NaN") {
/**考慮是蘋果瀏覽器不兼容的情況 */
date = new Date(time.replace(/-/g, "/"));
/**還是NaN 考慮是不合法的時間字符串 */
if (date.getDay() === "NaN") {
return {};
}
}
return date;
}