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:

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

[/code]

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:

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

y entonces el codigo quedaria asi:

[code 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];
}
[/code]

y un ejemplo de uso:

[code lang=”javascript”]
alert(formatearFecha(‘1999-09-10’));
[/code]

output: 10 de Octubre de 1999

1 comment
  1. Bitacoras.com
    septiembre 23, 2011 at 12:03 pm

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

    Reply
Leave a Reply

Your email address will not be published. Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Do NOT follow this link or you will be banned from the site!
WP2FB Auto Publish Powered By : XYZScripts.com