Safari 的日期解析怪癖
為什麼Safari 在遇到「2010-11-29」等格式的日期時會拋出「無效日期”錯誤',而其他瀏覽器處理這些日期沒有問題?這種不一致的行為可能會讓 Web 開發人員感到沮喪。
問題的根源在於 Safari 對日期字串中破折號 (-) 的解釋。雖然大多數瀏覽器將破折號識別為日期分隔符,但 Safari 錯誤地將它們視為日期本身的一部分,從而導致日期計算不正確。
為了說明這一點,請嘗試以下字串解析嘗試:
alert(new Date('2010-29-11')); // Doesn't work in Safari alert(new Date('29-11-2010')); // Doesn't work in Safari alert(new Date('11-29-2010')); // Doesn't work in Safari
如您所見,無論組件的順序如何,Safari 都無法正確解析這些日期。
雖然使用 Moment.js 或 date-fns 等單獨的函式庫可能是緩解此問題的選項,有一個更直接的解決方案。只需將破折號替換為斜線(/),Safari 就可以正確解釋日期字串:
console.log(new Date('2011-04-12'.replace(/-/g, "/")));
這一行修復可確保Safari 能夠以預期格式解析日期,從而允許Web 應用程式顯示和顯示日期。在多個瀏覽器中一致地操作日期。
以上是為什麼 Safari 無法處理「2010-11-29」格式的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!