¿Convertir cadena hasta la fecha en jQuery e Internet Explorer?

Quiero convertir una cadena de fecha en un objeto de fecha en jQuery, y el siguiente código funciona bien para Chrome y Firefox, pero no en Internet Explorer:

 //Validate if the followup date is now or passed: jQuery.noConflict(); var now = new Date(); jQuery(".FollowUpDate").each(function () { if (jQuery(this).text().trim() != "") { var followupDate = new Date(jQuery(this).text().trim()); //Here's the problem alert(followupDate); if (followupDate <= now) { jQuery(this).removeClass('current'); jQuery(this).addClass('late'); } else { jQuery(this).removeClass('late'); jQuery(this).addClass('current'); } } });  

La alerta solo está ahí para las pruebas, y en Chrome y Firefox devuelve un objeto de fecha, pero en IE obtengo NaN.

¿Qué está mal y cómo puedo hacer esta conversión para que funcione también en IE?

Esta pregunta me ayudó a encontrar una solución a un problema que tenía fechas de conversión. Encontré una forma de convertir la fecha sin usar scripts separados o pruebas para el tipo de navegador.

El siguiente código acepta una fecha en el formato 2011-01-01 (año, mes, día).

 function convertDate(stringdate) { // Internet Explorer does not like dashes in dates when converting, // so lets use a regular expression to get the year, month, and day var DateRegex = /([^-]*)-([^-]*)-([^-]*)/; var DateRegexResult = stringdate.match(DateRegex); var DateResult; var StringDateResult = ""; // try creating a new date in a format that both Firefox and Internet Explorer understand try { DateResult = new Date(DateRegexResult[2]+"/"+DateRegexResult[3]+"/"+DateRegexResult[1]); } // if there is an error, catch it and try to set the date result using a simple conversion catch(err) { DateResult = new Date(stringdate); } // format the date properly for viewing StringDateResult = (DateResult.getMonth()+1)+"/"+(DateResult.getDate()+1)+"/"+(DateResult.getFullYear()); return StringDateResult; } 

¡Espero que ayude!

Si es una cadena que parece una fecha, usa esto.

 var followupDate = new Date(Date.Parse(jQuery(this).text().trim())); 

Supongo que una pregunta que debería haber preguntado es, ¿cuál es el resultado de

 jQuery(this).text().trim() 

?

Lo descubrí: IE aparentemente no aceptó el formato de fecha sueco, así que hice una cadena de reemplazo a un formato que aceptó:

var followupDate = new Date (datestring.replace (‘-‘, ‘/’));

Desafortunadamente, este formato no fue aceptado por Firefox, así que tuve que mantener el código original para Chrome y Firefox, y luego usar un script separado para IE con comentarios condicionales.

No he probado esto, pero ¿qué tal?

 var followupdate = new Date(jQuery(this).text().trim().toString()); 

El ” toString() ” debe obligarlo a interpretarse como una cadena; el objeto Fecha debe aceptar la cadena como entrada válida, y podría evitar que IE la vomite.

Yo uso el momento así:

 new Date(moment(item.ToDate)); 

También funciona con fechas suecas ‘2013-01-05’:

 new Date(moment('2013-01-05')); 
    Intereting Posts