本週寫小程序,遇到的一個bug,在chrome上顯示得好好的時間,一到Safari/iPhone 就報錯 「invalid date」,時間格式爲「2019.06.06 13:12:49」,而後利用new Date() 轉換時間戳時,使用微信開發工具、安手機開發版、安手機體驗版都沒問題,ios中沒法展現。ios
猜測,會不會是Safari不支持yyyy-mm-dd / yyyy.mm.dd 這種格式,因而在 safari 瀏覽器測試一波,順便也測試了 「2018-12-10」格式的:正則表達式
safari 瀏覽器報錯:2018.12.10 11:11:11日期格式chrome
safari 瀏覽器報錯:2018-12-10 11:11:11 日期格式 小程序
因而就replace正則替換瀏覽器
let dateStr1 = '2018.12.10 11:11:11';
let dateStr2 = '2018-12-10 11:11:11';
/* 利用正則表達式替換時間中的」-或者.」爲」/」便可 */
dateToTimestamp(dateStr) {
if (!dateStr) {
return ''
}
let newDataStr = dateStr.replace(/\.|\-/g, '/')
let date = new Date(newDataStr);
let timestamp = date.getTime();
return timestamp
}
this.dateToTimestamp(dateStr1)
this.dateToTimestamp(dateStr2)
複製代碼
後來爲了驗證本身的想法,上stackoverflow上查查,看到了幾個相似的問題,這裏挑一個有表明性的給你們看看:bash
Safari JS cannot parse YYYY-MM-DD date format?微信
大概的意思是說,在執行new Date( string )
的時候,不一樣瀏覽器會採用不一樣的parse,目前chrome
兩種格式都支持,而Safari
只支持yyyy/mm/dd。微信開發
PS:最近在開始作移動端開發,後面應該會遇到了很多兼容性問題,不斷總結,但願之後少踩坑!工具