最近在做行動Web的時候,在PC上用Chrome調試都成功了,但是在iPhone上真機一測就出現了奇怪的問題。經過一系列調試發現是日期相關的地方出現了問題。起初懷疑是生產環境的問題,但用Mac版的safari調試本地也出現了同樣的問題。查閱一些資料後發現,safari中對於JavaScript的new Date函數的支援有一個比較奇怪的問題。
通常,由於習慣了SQL中的datetime格式,日期是打成yyyy-mm-dd的格式,然而,safari竟然不支援這樣的格式,所以當你輸入如下語句時,會返回空的時間。
new Date('2016-04-17');
Safari支援的格式是yyyy/mm/dd這樣的,差別主要在於短橫-與斜杠/,而斜杠這樣的格式在其他常見的瀏覽器中也都是可以正常運行的,所以只要都換成斜線就可以了,轉換函數如下圖:
new Date('2016-04-17'.replace(/-/g, "/"));