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: marzoConclusió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.