Lenguaje PHP

Fechas en español con PHP: Ejemplos

Convertir fechas PHP a Español en letras

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.

Fechas en español con PHP: Ejemplos
Fechas en español con PHP: 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.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba