>  기사  >  웹 프론트엔드  >  IE의 날짜 생성자가 브라우저 간 날짜 변환에서 NaN 오류를 유발합니까?

IE의 날짜 생성자가 브라우저 간 날짜 변환에서 NaN 오류를 유발합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-20 13:37:02113검색

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

IE 날짜 생성자가 NaN을 반환함: 브라우저 간 날짜 변환 솔루션

JavaScript 날짜 조작 영역에서 다음과 같은 특이한 문제가 발생합니다. Date 생성자가 Firefox 및 Chrome의 동료와 다르게 동작하는 Internet Explorer(IE)입니다. 문자열에서 새 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>

In 이 함수에서 dateText 매개변수는 'm, d, Y' 형식(예: "02, 01, 2010")으로 이번 주의 월요일을 나타냅니다. 이 형식은 Firefox 및 Chrome에서 원활하게 작동하지만 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으로 문의하세요.