Lenguaje PHP

Convertir fecha PHP en español

¿Cómo convertir fechas a español usando Función PHP?

Convertir fecha PHP en español. La dinámica de PHP es muy importante, para mostrar fechas en nuestras web o nuestras aplicaciones web, para lograr esto se tiene una función llamada date() que al agregarles unos «parámetros» (letras), o una estructura. Nos devuelve un valor como fecha de un determinado tiempo o la fecha actual. Por ejemplo.

<?php
$fechaactual = date("d M,Y");
echo $fechaactual;
?>

Ese pequeño script php con la función date nos mostrará la fecha de la siguiente forma 05 Set, 2021 pero el punto es que dice los meses en inglés abreviado. Ahora con estos concejos podremos cambiarlo  al idioma español.

Primero hacemos un array con todos los meses del año, ejemplo:

<?php
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
?>
Y escribiendo la función date de ésta forma, obtendremos el número de posición de cada mes. Por ejemplo, Enero = 1, Febrero = 2, Marzo = 3 ……. Diciembre = 12.
date("n");
Al final, todo quedaría de ésta forma
<?php
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");

echo $meses[date('n')-1];
?>

Convertir fecha PHP en español

Otra opción para realizar lo mismo es la siguiente.

Cuando compilamos el código PHP la fecha con PHP aparece en inglés 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, 05 Set 2016
 ?>

También podemos incorporar la función setlocale. Algo muy importante para tener en cuenta al momento de utilizar con la función setlocale también 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 configurar 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.

Ejemplo:

<?php
setlocale(LC_ALL,"es_ES");
echo strftime("%A %d de %B del %Y");
 
//Salida: viernes 05 de Septiembre del 2016
?>

En hora buena con esto ya tenemos nuestra fecha configurada para que imprima en idioma español sin problema, Ahora solo queda darle estilos y formatos.

Un detalle

Más detalles, que sucedería si nuestro servidor comprado no soporta la función  setlocale, bueno todo tiene solución, para esto una forma fácil de hacerlo es usar arrays.

Tenemos que hacerlo de manera manual. Sin embargo, para los días de la semana tendríamos que programar de la siguiente manera:

<?php
 
$diassemana = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
 
echo $diassemana[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y') ;
//Salida: Miercoles 05 de Septiembre del 2016
 
?>

Dentro de la variable $diasemana se utiliza un array en el que se almacena los días de la semana, recordemos que los  array sirven para almacenar, manejar y operar conjuntos de variables.

Al momento de mandar a compilar el código utilice la función date con el formato ‘w’ que nos devuelve los datos numérica del día de la semana.

Obtener fecha mes en español

  • Obtener el descriptivo del mes actual
setlocale(LC_TIME, "spanish");
echo strftime("%B");
//devuelve: noviembre
  • Obtener el descriptivo de la fecha actual en español
setlocale(LC_TIME, "spanish");
echo strftime("%A, %d de %B de %Y");
//devuelve: viernes, 17 de noviembre de 2021
  • 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 = '2021/11/18';
$fecha = str_replace("/", "-", $fecha); 
$newDate = date("d-m-Y", strtotime($fecha)); 
$mesDesc = strftime("%B de %Y", strtotime($newDate));
//devuelve: Noviembre de 2021

Convertir fecha a español usando función

Otra forma es crear una función llamada fechaEs(), así podremos guardar la función en un archivo y requerirlo en PHP cuando sea necesario. Sin embargo, la misma obtendrá un único parámetro, que es el de fecha.

Crearemos un archivo llamado «fechaes.php»

function fechaEs($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;
}

¿Cómo aplicar la función?

Para usar la función solo debemos de incluir el  fichero que contiene la funcion creada y llamarlo cada vez que necesitemos convertir una fecha en español

<?php
//Incluimos el archivo con la función
include('fechaes.php');

//La fecha que queremos pasar a castellano
$miFecha = "02-11-2021";
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Fechas en Español</title>
</head>

<body>
<p>$miFecha = <?php echo $miFecha; ?></p>
<p>Fecha Español = <?php echo fechaEs($miFecha); ?></p>
</body>
</html>
//Salida en el Navegador
Fecha Español = Jueves 02 de Noviembre del 2021

Conclusión

Bueno espero que les sirva estos concejos de cómo convertir una fecha PHP al idioma español, cualquier cosa dejen su mensaje en los comentarios del post y estaré al pendiente para dar respuesta a sus inquietudes.

Convertir fecha PHP en español
Convertir fecha PHP en español

Referencias:

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

9 comentarios

  1. Gracias! Me pedían el día de la semana en español. Me sirvió de maravilla.

    $dias_espaniol=array(«Domingo», «Lunes», «Martes», «Miercoles», «Jueves», «Viernes»,»Sabado»);

    echo $dias_espaniol[date(«w»)-1];

  2. Nice me sirivo pero tengo un problema cuando lo pruebo de manera local me sirve perfecto pero cuando lo pongo en el archivo del servidor se queda en ingles 🙁 🙁 🙁 :(:(:(:( aiuda

Deja una respuesta

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

Botón volver arriba