一,困惑
昨天寫代碼遇到的一個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上查查,看到了幾個類似的問題,這裡挑一個有代表性的給大家看看:
Safari JS cannot parse YYYY-MM-DD date format?
大概的意思是說,在執行
new Date( string )
的時候,不同浏覽器會采用不同的parse,目前chrome兩種格式都支援,而Safari隻支援yyyy/mm/dd。
三,end
最近在做前端開發的時候,遇到了不少相容性問題,後面會不斷總結,希望以後少踩坑。
關于css,html的相容性問題,可以參考這個網站:
can i use
對于像我這樣的新手,這個網站具有極高的參考價值,希望也能幫到大家。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiN3YTNzMTMxEDNwYDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)