Fechas en español con PHP. En este articulo abordaremos en tema de convertir una fecha dada al idioma español, mostraremos 2 formas concretas de hacerlo y con ejemplos rápidos y sencillos.
Fechas en español con PHP
Aprenderemos a pasar de una fecha creada con la función date()
a un texto en castellano, conteniendo el nombre del día, el número del mismo, el mes y el año. Además, si es una fecha de MySQL y lo hemos extraído con PHP también funcionara con estos dos ejemplos.
Suponiendo que tenemos esta fecha y puede ser creada con PHP usando la función date("d-m-Y")
e imprimir con PRINT o ECHO. Además, podría ser una fecha extraída desde un gestor de base de datos como ser MYSQL.
31-03-2022
A la fecha obtenida deseamos convertir a texto, pero en el idioma español y el resultado que deseamos es el siguiente:
Resultado: jueves, 31 de marzo de 2022
¿Cómo convertir una fecha a español?
Hay varias formas de convertir una fecha creada con PHP o extraída de base de datos al idioma español. Por lo tanto, en este articulo abordaremos dos formas de hacerlo y pueden elegir cualquiera de los dos para sus proyectos web.
- Usando Función personalizada
- Funciones strtotime y strftime
Primera forma: Usando Función personalizada
Primero crearemos una función PHP llamada fechaEspanol, de esta manera podremos guardar la función en un archivo PHP y llamarlo cuando sea necesario. Sin embargo, esta función pasará un parámetro llamado $fecha
, que será la fecha dinámica para poder convertir.
function fechaEspanol($fecha) { ... }
Una vez que ya tenemos la estructura de la función y una vez implementada nos quedara de la siguiente manera:
function fechaEspanol($fecha) { $fecha = substr($fecha, 0, 10); $numeroDia = date('d', strtotime($fecha)); $dia = date('l', strtotime($fecha)); $mes = date('F', strtotime($fecha)); $anio = date('Y', strtotime($fecha)); $dias_ES = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"); $dias_EN = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"); $nombredia = str_replace($dias_EN, $dias_ES, $dia); $meses_ES = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); $meses_EN = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); $nombreMes = str_replace($meses_EN, $meses_ES, $mes); return $nombredia." ".$numeroDia." de ".$nombreMes." de ".$anio; }
Una vez que tengamos la función terminada podemos almacenarlo en un archivo PHP o en su fichero de funciones y lo llamáramos fechaEspanol.php
¿Como usar esta función fecha?
El uso es muy sencillo, como ya tenemos el fichero PHP con la función de conversión dentro, solo tenemos que llamarlo con REQUIRE o INCLUDE. Veamos el ejemplo completo de uso.
<?php //Incluimos el archivo que contiene la función require('fechaEspanol.php'); //La fecha que queremos pasar al español, puede ser de MySQL $miFecha = "31-03-2022"; ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Fechas en Español</title> </head> <body> <p>$miFecha = <?php echo $miFecha; ?></p> <p>fechaEspanol($miFecha) = <?php echo fechaEspanol($miFecha); ?></p> </body> </html>
Salida en el navegador
$miFecha = 31-03-2022 fechaEspanol($miFecha) = Jueves 31 de Marzo de 2022
Nota:
Otros usos que le podemos dar a esta función es por ejemplo pasar una fecha dinámica usando formularios por el método POST o el método GET del PHP. Por lo tanto, esas variables podemos pasarlo a la función obteniendo el resultado dinámico para convertir fechas al español.
Fecha en español: Usando strtotime y strftime en PHP
Usaremos la Función strtotime y strftime funciones predeterminadas del PHP. A continuación, detallamos un poco acerca de las funciones que usaremos en este segundo ejemplo:
- strtotime.- Convierte una descripción de fecha/hora textual en Inglés a una fecha Unix.
- strftime.- Formatea una fecha/hora local según una configuración local, en nuestro caso usaremos
setlocale(LC_TIME, "spanish");
Convertir una fecha actual a español
Usando setlocale(LC_TIME, "spanish");
obtendremos el descriptivo de la fecha actual en español de manera instantánea.
setlocale(LC_TIME, "spanish"); echo strftime("%A, %d de %B de %Y");
Si ejecutamos el código anterior obtendremos como resultado una fecha en letras, pero en idioma español
//devuelve: Jueves, 31 de marzo de 2022
Mostrar fecha en español desde una variable
Obtener el descriptivo de una fecha dada en español (la variable $fecha la hemos definido al principio del artículo)
setlocale(LC_TIME, "spanish"); $fecha = '2022/04/01'; $fecha = str_replace("/", "-", $fecha); $newDate = date("d-m-Y", strtotime($fecha)); echo $mesDesc = strftime("%A, %d de %B de %Y", strtotime($newDate));
Al enviar al navegador esta instrucción PHP nos devolverá el siguiente resultado.
//Resultado en el navegador: sábado, 18 de noviembre de 2017
Mostrar el mes actual en español
Si deseamos obtener el mes actual en español el script sería el siguiente:
setlocale(LC_TIME, "spanish"); echo strftime("%B"); //devuelve: marzo
Conclusión:
Ene este articulo hemos aprendido de una manera sencilla dos formas para convertir una fecha PHP a español y en letras.
En la primera forma hemos usado una función personalizada y bastante útil. Sin embargo, podemos modificar el return
para que se ajuste a tus necesidades.
Espero que esta breve explicación les ayude en sus proyectos web.