"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 > Por que o construtor de datas do IE difere do tratamento de datas do Chrome e do Firefox?

Por que o construtor de datas do IE difere do tratamento de datas do Chrome e do Firefox?

Publicado em 2024-11-08
Navegar:113

Why Does IE Date Constructor Differ from Chrome and Firefox Date Handling?

Problema do construtor de data IE: NaN vs. funcionalidade em outros navegadores

Dentro de um projeto envolvendo desenvolvimento de calendário JavaScript, surgiram discrepâncias no tratamento de datas entre Internet Explorer (IE) e navegadores como Firefox e Chrome. Especificamente, as funções de data do IE resultavam em valores NaN (não é um número), embora funcionassem corretamente nos outros navegadores.

Após investigação, ficou claro que a causa raiz estava relacionada ao formato de data usado. A função em questão, buildWeek(), pretendia gerar datas de cabeçalho para uma semana civil com base em uma data de segunda-feira fornecida no formato 'm, d, Y', por exemplo, "02, 01, 2010". Porém, no IE, esse formato não estava sendo reconhecido corretamente, levando ao problema do NaN.

Para resolver essa discrepância, uma abordagem diferente foi adotada. Em vez de depender do formato fornecido, a string de data foi dividida em seus componentes (data e hora) usando split(" "). Posteriormente, o componente de data foi dividido em suas partes constituintes (ano, mês, dia) usando split("-"), e o componente de tempo foi dividido em suas partes (horas, minutos, segundos) usando split(":") .

Uma instância de Date foi então construída usando esses valores analisados. Este método provou ser compatível com todos os navegadores, garantindo tratamento consistente de datas no IE, Firefox e Chrome.

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]);

Ao adotar este abordagem, os erros NaN no IE foram eliminados com sucesso, alcançando um tratamento consistente de datas em diferentes navegadores.

Declaração de lançamento Este artigo é reproduzido em: 1729402457 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