天天看點

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

對于像我這樣的新手,這個網站具有極高的參考價值,希望也能幫到大家。

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