Que tal queridos lectores hoy toca un pequeño tutorial donde hablare acerca de como poner las fechas en español cuando trabajamos con PHP, existen muchas formas de hacerlo, que si con una función, que con arrays, que set_locale, por mencionar algunas de las muchas formas con las que podemos realizar nuestro objetivo, obviamente todo depende del nivel de conocimiento que se tenga en PHP buscaremos la forma más fácil para nosotros de implementar nuestros scripts.
Empezare a hablar acerca de este tema tomando como entendido que ya tienen conocimiento básico de PHP y de la Función Date, por si tienen sus dudas hace tiempo publique un tip acerca de esta función les recomiendo lo revisen antes de empezar.
Sin más rodeos a codear sea dicho.
Cuando mandamos a imprimir una fecha con PHP aparece en ingles y con el formato de Unix por defecto, nosotros podemos decir que es lo que queremos mostrar y como queremos hacerlo.
<?php echo date('l, d M Y'); //Formato de salida: Friday, 24 Feb 2012 ?>
Partiendo de esto, como logramos poner en español esa fecha, vamos a hacerlo de la manera más facil que es configurar la función setlocale la cual establece la información de la configuración regional y la cual hará todo el trabajo por nosotros. La función setlocale nos ofrece traducciones de cosas básicas, como la fecha, que suelen venir en el sistema operativo. Veamos como configurar setlocale para el idioma Español:
Algo muy importante para tener en cuenta al momento de trabajar con la función setlocale tambien tenemos que utilizar la función strftime la cual formatea una fecha/hora local según la configuración regional que manejemos con setlocale.
La secuencia estándar para el idioma Español que debería funcionar en cualquier plataforma es:
setlocale(LC_ALL,”es_ES”);
LC_ALL: Es una constante que especifica la categoría de las funciones afectadas por la configuración regional, en este caso toma en cuanta todas las constantes.
es_ES: Los primeros 2 caracteres identifican al idioma, los 2 últimos al país.
<?php setlocale(LC_ALL,"es_ES"); echo strftime("%A %d de %B del %Y"); //Salida: viernes 24 de febrero del 2012 ?>
Listo con esto ya tenemos nuestra fecha en español sin mayor problema, ya nada más es cosa de darle formato, pero eso ya les toca a ustedes XD.
Pero
Qué pasa si nuestro servidor no soporta setlocale :S , bueno para esto una forma fácil de hacerlo es usar arrays.
En este caso podemos hacer la traducción nosotros mismos. Por ejemplo, para el día de la semana haríamos algo así:
<?php $dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado"); $meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"); echo $dias[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y') ; //Salida: Viernes 24 de Febrero del 2012 ?>
Explicando un poco el código por si dicen que carajo hizo este tipo, bueno vamos por partes:
Dentro de la variable $dias utilice un array en el que almacene los días de la semana, recordemos que los array sirven para almacenar, manejar y operar conjuntos de variables.
Al momento de mandar a imprimir en pantalla utilice la función date con el formato ‘w’ que nos devuelve la representación numérica del día de la semana (0 para domingo hasta 6 para sábado).
Para la parte de los meses utilice la misma lógica, pero hay que tomar en cuenta que el formato ‘n’ nos devuelve los números de los meses de 1 hasta 12, entonces esto lo que nos causaría es que se recorrerían los meses una posición, ejemplo si dejamos la $meses[date(‘n’)] lo que nos pondría seria el mes siguiente en lugar de poner el mes actual, ejemplo, si estamos en Febrero pondría Marzo y eso no es lo que queremos, de ahí que se le haya agregado el -1, con esto tenemos resuelta esta parte, si se preguntan por que pasa eso, es por que los arrarys empiezan a contar desde 0 y no desde 1, así como tenemos el arreglo de $meses sería de 0 hasta 11 ahí tendríamos las 12 posiciones.
Fuente: http://lachabela.wordpress.com/2012/02/24/fechas-en-espanol-con-php-y-setlocale/