"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O que causa erros NaN no Internet Explorer ao usar o construtor de data do JavaScript?

O que causa erros NaN no Internet Explorer ao usar o construtor de data do JavaScript?

Publicado em 2024-11-09
Navegar:393

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

Mau funcionamento do construtor de data no IE: uma comparação entre navegadores

No domínio do desenvolvimento web, o construtor Date do JavaScript provou ser um aliado confiável para desenvolvedores que buscam manipular datas. No entanto, um fenômeno curioso foi observado ao usar este construtor nos principais navegadores. Embora o Firefox e o Chrome adotem alegremente a funcionalidade do Date, sabe-se que o Internet Explorer tropeça, retornando NaN (Not-a-Number) para determinadas operações de data.

Para desvendar esse enigma, vamos nos aprofundar no problema específico observado por um desenvolvedor construindo um calendário. A construção de data a partir de uma string de data formatada em PHP ('m, d, Y') funcionou perfeitamente no Firefox e no Chrome, mas o IE insistiu em fazer birras NaN.

function buildWeek(dateText){ var headerDates=''; var novaData = nova Data(dataText); for(var d=0;d' novaData ''; novaDate.setDate(newDate.getDate() 1); } jQuery('div#headerDates').html('

' headerDates '
'); }

A raiz do problema está no formato da data. Embora o IE possa analisar datas em seu formato nativo ('AAAA-MM-DD'), ele tem dificuldades quando confrontado com o formato 'm, d, Y' empregado neste código.
function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;dA solução: Padronizando o formato de data

Para garantir a compatibilidade entre navegadores, é fundamental padronizar o formato de data usado na construção de data. A abordagem recomendada é converter a sequência de datas em um formato que o IE possa entender facilmente. Uma opção conveniente é aproveitar o método split() para dissecar a string de data e, em seguida, passar os componentes individuais para o construtor Date. 08-03 09:15:11", o seguinte trecho de código normalizaria o formato para compatibilidade com o IE:

var dateStr="2011-08-03 09:15:11"; //retornado do campo timestamp/datetime do mysql 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]);

Ao adotar este abordagem, você pode garantir que suas operações de data funcionarão bem em todos os principais navegadores, eliminando erros inexplicáveis ​​​​de NaN que podem causar estragos em seu código.

Declaração de lançamento Este artigo foi reimpresso em: 1729402280 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3