Mal funcionamiento del constructor de fechas en IE: una comparación entre navegadores
En el ámbito del desarrollo web, el constructor de fechas de JavaScript ha demostrado ser un aliado confiable para los desarrolladores que buscan manipular fechas. Sin embargo, se ha observado un fenómeno curioso al utilizar este constructor en los principales navegadores. Mientras que Firefox y Chrome adoptan felizmente la funcionalidad de Date, se sabe que Internet Explorer tropieza y devuelve NaN (Not-a-Number) para ciertas operaciones de fecha.
Para desentrañar este enigma, profundicemos en el problema específico observado por un desarrollador construyendo un calendario. Su construcción de fecha a partir de una cadena de fecha con formato PHP ('m, d, Y') funcionó perfectamente en Firefox y Chrome, pero IE insistió en hacer berrinches de NaN.
El problema de construcción de fecha
function buildWeek(dateText){
var headerDates='';
var newDate = new Date(dateText);
for(var d=0;dLa raíz del problema radica en el formato de fecha. Si bien IE puede analizar fechas en su formato nativo ('AAAA-MM-DD'), tiene problemas cuando se enfrenta al formato 'm, d, Y' empleado en este código.
La solución: Estandarización del formato de fecha
Para garantizar la compatibilidad entre navegadores, es imperativo estandarizar el formato de fecha utilizado en la construcción de fechas. El enfoque recomendado es convertir la cadena de fecha a un formato que IE pueda entender fácilmente. Una opción conveniente es aprovechar el método split() para diseccionar la cadena de fecha y luego pasar los componentes individuales al constructor de fecha.
Por ejemplo, suponiendo que un campo de fecha, hora/marca de tiempo de MySQL devuelva una cadena como "2011- 08-03 09:15:11", el siguiente fragmento de código normalizaría el formato para la compatibilidad con IE:
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]);
Al adoptar esto Con este enfoque, puede asegurarse de que sus operaciones de fecha funcionen correctamente en todos los principales navegadores, eliminando errores NaN inexplicables que pueden causar estragos en su código.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3