>  기사  >  웹 프론트엔드  >  JavaScript의 날짜 생성자를 사용할 때 Internet Explorer에서 NaN 오류가 발생하는 원인은 무엇입니까?

JavaScript의 날짜 생성자를 사용할 때 Internet Explorer에서 NaN 오류가 발생하는 원인은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-20 13:32:29551검색

What Causes NaN Errors in Internet Explorer When Using JavaScript's Date Constructor?

IE의 날짜 생성자 오작동: 브라우저 간 비교

웹 개발 영역에서 JavaScript의 Date 생성자는 날짜를 조작하려는 개발자의 믿음직한 동맹자입니다. 그러나 주요 브라우저에서 이 생성자를 사용할 때 이상한 현상이 관찰되었습니다. Firefox와 Chrome은 Date의 기능을 기꺼이 수용하지만 Internet Explorer는 특정 날짜 작업에 대해 NaN(Not-a-Number)을 반환하는 등의 문제가 있는 것으로 알려져 있습니다.

이 수수께끼를 풀기 위해 달력을 만드는 개발자. PHP 형식 날짜 문자열('m, d, Y')을 사용한 날짜 구성은 Firefox와 Chrome에서 완벽하게 작동했지만 IE는 NaN 짜증을 냈습니다.

날짜 구성 문제

<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>

문제의 근원은 날짜 형식에 있습니다. IE는 기본 형식('YYYY-MM-DD')으로 날짜를 구문 분석할 수 있지만 이 코드에 사용된 'm, d, Y' 형식에 직면하면 어려움을 겪습니다.

해결책: 날짜 형식 표준화

브라우저 간 호환성을 보장하려면 날짜 구성에 사용되는 날짜 형식을 표준화하는 것이 필수적입니다. 권장되는 접근 방식은 날짜 문자열을 IE가 쉽게 이해할 수 있는 형식으로 변환하는 것입니다. 한 가지 편리한 옵션은 분할() 메서드를 활용하여 날짜 문자열을 분석한 다음 개별 구성 요소를 Date 생성자에 전달하는 것입니다.

예를 들어, MySQL 날짜/시간 스탬프 필드가 "2011- 08-03 09:15:11"에서 다음 코드 조각은 IE 호환성을 위해 형식을 정규화합니다.

<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>

이 접근 방식을 채택하면 Date 작업이 모든 주요 브라우저에서 원활하게 작동하도록 할 수 있습니다. , 코드에 큰 피해를 줄 수 있는 설명할 수 없는 NaN 오류를 제거합니다.

위 내용은 JavaScript의 날짜 생성자를 사용할 때 Internet Explorer에서 NaN 오류가 발생하는 원인은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.