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"); ?>
date("n");
<?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.
Referencias:
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];
muy buena explicacion
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
Gran aporte. Gracias
Muy buena explicación, gracias!!
Muy bueno. Yo lo habia hecho mas largo al codigo usando la funcion if, pero con array es mucho mas simple.
Saludos.
Gracias, muy bien! con una variable $date, el código sería:
Saldría:
20 de Abril del 2020
Me puedes indicar la estructura del código como lo lograste cambiar la fecha de ingles a español.
Visitor Rating: 4 Stars