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