formatear fecha en javascript

formatear fechas javascript

formatear fechas javascriptAyer 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′ entonces lo pase a “23 de Diciembre de 1995″ lo que hice fue lo siguiente:

[cc lang=”javascript”]
//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])) -1 ;
//ya retornamos dia de mes de anio
return fechaCortada[2] + ‘ de ‘ + meses[indexMes] + ‘ de ‘ + fechaCortada[0];
}

[/cc]

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:

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

y entonces el codigo quedaria asi:

[cc lang=”javascript”]
//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];
}
[/cc]

y un ejemplo de uso:
[cc lang=”javascript”]
alert(formatearFecha(‘1999-09-10’));
[/cc]
output: 10 de Octubre de 1999

Artículos Relacionados

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 ..