一,困惑
昨天寫代碼遇到的一個bug,在chrome上顯示得好好的時間,一到Safari就提示 “invalid date”,於是回來看代碼(爲了一目瞭然,進行一些處理):
var deadline = new Date("2016-06-10 23:59");
這行代碼是將數據庫中存的日期“2016-06-10”字符串轉成Date對象。
二,分析
當看到日期格式是yyyy-mm-dd,我聯想到了yyyy/mm/dd格式,以前我也好奇這兩種格式有什麼區別,不過之前用chrome瀏覽器來測試這兩種日期格式,發現並沒有什麼區別(當初並沒有瀏覽器兼容問題的考慮 - -!)。
於是我猜,會不會是Safari不支持yyyy-mm-dd這種格式,馬上改代碼:
var date_format = "2016-06-10".split('-').join('/')
var deadline = new Date(date_format + " 23:59");
將yyyy-mm-dd格式轉換成yyyy/mm/dd格式後,發現Safari和chrome都沒有問題了,看來是瀏覽器對時間格式支持不太一樣。
後來爲了驗證自己的想法,上stackoverflow上查查,看到了幾個類似的問題,這裏挑一個有代表性的給大家看看:
大概的意思是說,在執行new Date( string )
的時候,不同瀏覽器會採用不同的parse,目前chrome兩種格式都支持,而Safari只支持yyyy/mm/dd。
三,end
最近在做前端開發的時候,遇到了不少兼容性問題,後面會不斷總結,希望以後少踩坑。
關於css,html的兼容性問題,可以參考這個網站:
can i use
對於像我這樣的新手,這個網站具有極高的參考價值,希望也能幫到大家。