Convertir fechas de PHP a castellano

¡Muy buenas! Escribo esta entrada el último día de este mes. Estuve bastante ocupado trabajando en un par de proyectos, y recién hoy tengo un día completamente libre.

En esta ocasión traigo un tutorial bastante sencillo, donde voy a enseñar como pasar de una fecha hecha 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.

Para esto se usa este tipo de fechas:

30-04-2016 04:20:00

Que se crean así:

//Se define el timezone que sea necesario
date_default_timezone_set('America/Argentina/Buenos_Aires');

//Dia-Mes-Año Hora:Minutos:Segundos
$fecha = date('d-m-Y H:i:s');

Y obtendremos como resultado:

Sábado 30 de Abril de 2016

Es importante que los separadores de la fecha sean un guión y no una barra (-, no /). Los guiones definen el sistema de formato europeo, mientras que las barras definen que el formato es “americano” (estadounidense).

¿Cómo pasar la fecha a castellano?

Para hacerlo más ameno , crearé una función llamada fechaCastellano, así podremos guardar la función en un archivo y requerirlo en PHP cuando sea necesario. La misma obtendrá un único parámetro, que es el de fecha.

function fechaCastellano ($fecha) {
}

Ahora recortaremos la fecha para obtener los diez primeros caracteres (es decir: 30-04-2016). No importa si la fecha tiene o no la hora, es por si acaso.

function fechaCastellano ($fecha) {
    $fecha = substr($fecha, 0, 10);
}

Después vamos a obtener el número de día, el día (nombre del día), el mes y el año. Esto se hace con la función strtotime().

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

Por defecto el día y el mes ($dia, $mes) se obtienen en inglés, así que vamos a pasarlo a castellano/español usando str_replace().

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

Lo último sería devolver los datos en una sintaxis clara. En este caso sería así:

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

Así solo nos quedaría hacer algo así:

<?php
//Incluimos el archivo con la función o simplemente pegamos la función
require('fechaCastellano.php');

//La fecha que queremos pasar a castellano
$miFecha = "30-04-2016 04:20:00";
?>

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

<body>
<p>$miFecha = <?php echo $miFecha; ?></p>
<p>fechaCastellano($miFecha) = <?php echo fechaCastellano($miFecha); ?></p>
</body>
</html>

Y ya tenemos la fecha en español.

Conclusión:

Es una función muy simple pero bastante útil. Recuerda que puedes modificar el return para que se ajuste a tus necesidades.

Espero que el tutorial haya sido de utilidad. Nos leemos, ¡saludos!

One comment

  1. Andre · mayo 3

    Muy bueno, muchas gracias.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s