首頁  >  文章  >  web前端  >  IE 的日期建構函式是否會導致跨瀏覽器日期轉換出現 NaN 錯誤?

IE 的日期建構函式是否會導致跨瀏覽器日期轉換出現 NaN 錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-20 13:37:02116瀏覽

Does IE's Date Constructor Cause NaN Errors in Cross-Browser Date Conversions?

IE 日期構造函數回傳NaN:跨瀏覽器日期轉換解決方案

在JavaScript 日期操作領域,出現了一個特殊問題Internet Explorer (IE) 中Date 建構子的行為與Firefox 和Chrome 中的同級建構子不同。當嘗試從字串建立新的 Date 物件時,IE 傳回 NaN(不是數字),而其他瀏覽器產生有效日期。

要理解這種差異,我們需要深入研究所使用的底層解析器機制由每個瀏覽器。在 IE 中,Date 建構函式難以處理某些日期格式,特別是那些包含逗號作為分隔符號的日期格式。

以下是開發人員嘗試建立日曆時遇到的特定範例:

<code class="javascript">function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d<7;d++){
        headerDates += '<th>' + newDate + '</th>';
        newDate.setDate(newDate.getDate()+1);
    }                       

    jQuery('div#headerDates').html('<table><tr>'+headerDates+'</tr></table>');
}</code>

在此函數中,dateText 參數表示本週的星期一,格式為「m, d , Y”(例如“02, 01, 2010”)。雖然這種格式在 Firefox 和 Chrome 中無縫運行,但在 IE 中帶來了挑戰,因為 IE 無法正確解析逗號分隔值。

要解決此問題,我們可以使用更一致且跨瀏覽器相容的格式日期格式。其中一種方法是將逗號分隔的字串轉換為離散值數組,然後可以使用該數組建立有效的Date 物件:

<code class="javascript">var dateStr="2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field
var a=dateStr.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);</code>

在此範例中,dateStr 變數表示日期和從MySQL 資料庫檢索的時間,格式為「YYYY-MM-DD HH:MM:SS」。透過將此字串拆分為其組成部分並將它們單獨傳遞給 Date 建構函數,我們確保跨瀏覽器一致地處理轉換。

此解決方案解決了跨瀏覽器日期解析差異,並使 buildWeek 函數能夠在所有主要瀏覽器中無縫工作,包括 Internet Explorer。

以上是IE 的日期建構函式是否會導致跨瀏覽器日期轉換出現 NaN 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn