Safari不能正確解析yyyy-mm-dd

一,困惑

昨天寫代碼遇到的一個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
對於像我這樣的新手,這個網站具有極高的參考價值,希望也能幫到大家。

caniuse檢測css瀏覽器兼容性問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章