lunes, 24 de octubre de 2011

Javascript, JSON y las fechas

En estos últimos años se ha puesto muy de moda el uso de JSON con Ajax para el envío de datos entre la página web y el servidor. Pero si consultamos la definición de JSON podemos comprobar que este formato no tiene soporte para fechas.

Formato fecha en JSON

Los desarrolladores que implementan los serializadores de JSON deben decidir que estrategia utilizar. Por otro lado, los que explotan servicios de terceros que envían fechas por JSON deben conocer son enviados, así que es recomendable solicitar la documentación donde se explique en qué formato se envían los datos.

Como programador en .NET sé que el serializador viene por defecto con el framework envía las fechas en un string con el siguiente formato: /Date(1319130612160)/

La cifra que va entre paréntesis indica el número de milisegundos transcurridos desde el 01/01/1970. Este formato es el mismo que usa javascript para crear sus fechas. Si nos fijamos, podemos ver como el serializador de Microsoft ya nos da hecho el constructor del Date en javascript, así que para convertir a fecha tan solo hay que quitar las barras al string y poner un new delante. Se podría codificar una funcion parecida a esta:


function DateDeserialize(dateStr) {
return eval('new ' + dateStr.replace(/\//g, '') + ';');
}

Formateando Fechas en Javascript

Desgraciadamente Javascript no tiene funciones para formatear las fechas. La única solución es programar nuestras propias funciones. La otra forma que conozco de hacerlo es utilizando JQueryUI, un conjunto de plugins oficial de JQuery, pero para esto, el proyecto web debería estar ya usando eso. No incluiría unas librerías que pesan tanto en un proyecto solo para solucionar este problema.

El datepicker es plugin que se utiliza para decorar inputs para incluir un calendario. Además tiene un método llamado formatDate con el que podemos formatear las fechas con una sintaxis que resulta familiar para la mayoría de los programadores, por ejemplo: $.datepicker.formatDate('dd-mm-yy', fecha)

Conclusión

Siempre que se pueda, hay que evitar trabar con fechas en javascript. Todo ese trabajo es mucho mejor realizarlo en el lado del servidor. Es más rápido y se dispone de un api mucho más completo (lo que evita muchos problemas).

No hay comentarios:

Publicar un comentario