formatear fecha en javascript

formatear fechas javascript

Ayer me encontraba haciendo un parser para formatear la fecha y que saliera todo con letra por que el dato de php me llegaba en el siguiente formato ‘0000-00-00’ yo quería que dijera por ejemplo si tenemos ‘1995-12-23’ entonces lo pase a “23 de Diciembre de 1995” lo que hice fue lo siguiente:

 //El Arreglo de nombre de los meses.

var meses = new Array('Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');

/** *recibe fecha en formato yyyy-mm-dd y regresa dd de nombre_mes */

function formatearFecha(fecha){ if(fecha == '' || fecha === undefined || fecha =='0000-00-00'){ return 'fecha invalida'; }

//Separamos la fecha esto nos genera un arreglo de 3 posiciones en la cero el year, en la 1 el mes y en la 2 el dia nosotros queremos formatear el dia solamente asi que utilizaremos la posicion 1

var fechaCortada = fecha.split('-');

// convertimos el indice del mes en numero por que viene como string y accederemos al arreglo de meses por lo cual le restamos uno ya que enero es la posicion 0.

var indexMes = (parseInt(fechaCortada[1])) -1 ;

//ya retornamos dia de mes de anio

return fechaCortada[2] + ' de ' + meses[indexMes] + ' de ' + fechaCortada[0]; }

Asi es como lo habia dejado en un principio pero al momento de querer formatear una fecha de agosto o septiembre me marcaba undefined y era por que el parseInt(’08’) y parseInt(’09’) me los regresaba en cero WTF!, ya investigando en google me encontre con este articulo de porque javascript retorna cero para 8 y 9 de un tio que ya habia resuelto ese problema y explica que como el 8 y el 9 no son de base 8 entonces no los reconoce por lo tanto el parseInt esta configurado default con base 8 para resolver el problema tienes que decirle que tu quieres numeros de base 10 entonces haces este pequeño cambio:

// en la parte de var indexMes = (parseInt(fechaCortada[1])) -1 ; poner lo siguiente
var indexMes = (parseInt(fechaCortada[1],10)) -1 ;

y entonces el codigo quedaria asi:

//El Arreglo de nombre de los meses. global aca
var meses = new Array('Enero', 'Febrero', 'Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
/**
*recibe fecha en formato yyyy-mm-dd y regresa dd de nombre_mes
*/
function formatearFecha(fecha){
if(fecha == '' || fecha === undefined || fecha =='0000-00-00'){
return 'fecha invalida';
}
//Separamos la fecha esto nos genera un arreglo de 3 posiciones en la cero el year, en la 1 el mes y en la 2 el dia nosotros queremos formatear el dia solamente asi que utilizaremos la pocision 1
var fechaCortada = fecha.split('-');

// convertimos el indice del mes en numero por que viene como string y accederemos al arreglo de meses por lo cual le restamos uno ya que enero es la posicion 0.
var indexMes = (parseInt(fechaCortada[1],10)) -1 ;
//ya retornamos dia de mes de anio
return fechaCortada[2] + ' de ' + meses[indexMes] + ' de ' + fechaCortada[0];
}

y un ejemplo de uso:

alert(formatearFecha('1999-09-10'));

output: 10 de Octubre de 1999

Comentarios

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Ayer me encontraba haciendo un parser para formatear la fecha y que saliera todo con letra por que el dato de php me llegaba en el siguiente formato ’0000-00-00′ yo queria que dijera por ejemplo si tenenos ’1995-12-23 ..