formatear fecha en javascript

1 comment By godie On 23 de September de 2011

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//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];
}

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:

1
2
// 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//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:

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

output: 10 de Octubre de 1999

Te puede interesar:

One trackback

  1. Bitacoras.com (September 23, 2011)

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

Leave a Reply

Your email is never shared.

*