Posts recientes

El contenido de este blog tiene una licencia Creative Commons.
Creative Commons

Conversión de tipos fecha/hora de un servicio web a tipo Date de JavaScript   

Las fechas que nos llegan a través de un servicio web nos llegan en formato ISO-8601 (ej: 2005-03-26T19:51:34Z). Para poderlas tratar desde JavaScript debemos realizar la conversión de esta cadena a un tipo Date. Podemos hacer uso, por ejemplo, de una extensión sencilla del tipo Date, como la siguiente:

Date.prototype.setISO8601 = function (string) {
 var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
 "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
 "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
 var d = string.match(new RegExp(regexp));

 var offset = 0;
 var date = new Date(d[1], 0, 1);

 if (d[3]) { date.setMonth(d[3] - 1); }
 if (d[5]) { date.setDate(d[5]); }
 if (d[7]) { date.setHours(d[7]); }
 if (d[8]) { date.setMinutes(d[8]); }
 if (d[10]) { date.setSeconds(d[10]); }
 if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
 if (d[14]) {
 offset = (Number(d[16]) * 60) + Number(d[17]);
 offset *= ((d[15] == '-') ? 1 : -1);
 }

 offset -= date.getTimezoneOffset();
 time = (Number(date) + (offset * 60 * 1000));
 this.setTime(Number(time));
}

 

Una vez tenemos la extensión podemos realizar las conversiones con llamadas del tipo:

var date = new Date();
date.setISO8601("2005-03-26T19:51:34Z");
 
Publicado  en  30/08/2011  por  Rubén Claramunt Vicente
0  Comentarios  |  Trackback Url  | 0  Enlaces a este post | Bookmark este post con:          
Etiquetas: Javascript, C#
Technorati Tags: ,
 

Vinculos a este post

Comentarios