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 應用程式在多個瀏覽器中一致地顯示和操作日期。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3