PHP date(): obtener día, semana, mes y año y traducir fechas

Hoy vamos a repasar algunas de las funcionalidades de la función PHP date() y de este modo aprender todo lo que puedes realizar.

Aunque empecemos por el principio, ¿que te permite realizar la función date()?

Esta función básicamente se utiliza para obtener formateada la fecha local de nuestro sistema para obtener el día, semana, año y hora actual.

Puede que también te resulten interesantes los siguientes posts relacionados con la función date():

Sintaxis de PHP date()

A pesar de que puedes mirar la documentación oficial, nosotros te vamos a explicar todo lo que necesitas en este post para que no tengas que ir navegando por distintas paginas webs.

date ( string $format [, int $timestamp = time() ] ) : string

La función date() devuelve como resultado un string y tiene dos parámetros, uno obligatorio y otro opcional.

  • format (obligatorio): tienes que indicar mediante un string el formato de fecha que quieres obtener. Por ejemplo:
    • Si quieres obtener una fecha en formato “02/11/2020” el string tendría que ser:
    • d/m/Y
    • Si quieres obtener un fecha en formato “99-10-2” el string sería:
    • y-m-j
    • Si quieres obtener un fecha en formato “Lunes 24 de Junio del 2020” el string sería:
    • l d \de F \del Y

Puedes consultar todos los parámetros posibles en la página oficial de PHP.

  • timestamp (opcional): este parámetro opcional por defecto es la hora local, es decir,  el valor de la función time(). Si no quieres que coja por defecto la hora local, tienes la opción de modificarlo mediante este parámetro.

Traducir una fecha con PHP date() a un idioma determinado

Por defecto la fecha que nos devuelve la función date() es en inglés y con el formato UNIX por defecto.

echo date('l, d M Y');

// Esta función te va a devolver como resultado: Sunday, 26 Jan 2020

Si el anterior resultado lo quieres obtener en español tendrás que hacer uso de dos funciones:

  • setlocale(): Esta función establece la información de la configuración regional y se encargará de realizar la traducción de la fecha.
  • strftime(): Esta función formatea una fecha u hora local según la configuración regional que utilices con setlocale().

La estructura de código quedaría:

setlocale(LC_ALL, “es_ES”);

El primer parámetro de la función es una constante que especifica la categoría de las funciones afectadas por la configuración regional y si pones como valor “LC_ALL“, estas indicando que tenga en cuenta todas las constantes.

El segundo parámetro corresponde al idioma que quieres definir. Los dos primeros caracteres son el idioma y los dos últimos el país.

El código final sería:

setlocale(LC_ALL,"es_ES");
echo strftime("%A %d de %B del %Y");
 
// Resultado: domingo 26 de enero del 2020

Si con este código no obtienes la fecha traducida, puede ser que tu servidor no soporte setlocale(). Pero no tires la toalla, a continuación te proponemos otra opción que funciona si o si :).

Traducir una fecha con PHP date() y usando arrays

Esta opción sería la más manual de todas ya que tendrás que definir unos arrays poniendo todas las traducciones en ellos. Aunque no es tan práctica, esta opción te funcionará si o si.

Por ejemplo, si quieres traducir la anterior fecha en español, el código sería el siguiente:

$dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
 
echo $dias[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y') ;
//Resultado: Domingo 26 de Enero del 2020

La idea del anterior código es definir un array para los días de la semana y otro para los meses poniendo los valores en las posiciones adecuadas en base al resultado que nos devuelve la función date().

Para los días de la semana tienes que utilizar la función date() con el parámetro “w“, el cual te devuelve el día de la semana en formato numérico (0 para el domingo hasta 6 para el sábado).

Para los meses la idea es la misma pero utilizando la función date() con el parámetro “n“. En este caso el resultado son números del 1 hasta el 12, por lo que para obtener el valor correcto tienes que restarle uno al resultado.

date(‘n’)-1

Obtener el día actual con PHP date()

Hay varias maneras de obtener el día actual a través de la función date(). Las distintas opciones son:

d Día del mes con ceros iniciales (número) 01 a 31
j Día del mes sin ceros iniciales (número) 1 a 31
D Día de la semana en inglés, con tres letras (texto) Mon hasta Sun
l (‘L’ minúscula) Día de la semana en inglés, con todas las letras (texto) Sunday hasta Saturday
N Día de la semana en formato ISO-8601 (número) 1 (para lunes) hasta 7 (para domingo)
S Sufijo ordinal en inglés del día actual, 2 caracteres stndrd o th. Funciona bien con j
w Día de la semana en formato número 0 (para domingo) hasta 6 (para sábado)
z Día del año (empezando por 0) 0 hasta 365

La manera de hacer la llamada sería como ya has visto hasta el momento:

date(“d”);

date(“j”);

Obtener el número de la semana actual con PHP date()

Para obtener el número de la semana solo hay una opción. Esta se basa en el calendario gregoriano que consta de 52 semanas comenzando el lunes. La manera de obtener el valor es:

W Número de la semana del año ISO-8601 Ejemplo: 30 (la 30ª semana del año)

Obtener el mes actual con PHP date()

Las distintas opciones para obtener el mes actual con la función date() son:

F Nombre completo del mes actual January hasta December
m Número del mes actual con ceros iniciales 01 hasta 12
M Nombre corto de un mes con tres letras Jan hasta Dec
n Número del mes actual sin ceros iniciales 1 hasta 12
t Número de días del mes actual 28 hasta 31

Obtener el año actual con PHP date()

Para obtener el año actual, las distintas opciones que nos ofrece la función date() son:

L Para detectar si un año es bisiesto 1 si es bisiesto, 0 si no.
o Para obtener el año según el número de la semana ISO-8601. Esto valor será igual que con el parámetro Y, excepto si el número de la semana ISO (W) pertenece al año anterior o siguiente. Ejemplos: 1999 o 2003
Y Para obtener el año actual con los 4 dígitos. Ejemplos: 1999 o 2003
y Para obtener el año actual con 2 dígitos. Ejemplos: 99 o 03

Obtener la hora local actual con PHP date()

Para obtener la hora actual, la función date() nos ofrece muchas posibilidades. Estas son las siguientes:

a Para obtener el formato “am” o “pm” am o pm
A Para obtener el formato “AM” o “PM” AM o PM
B Hora Internet 000 hasta 999
g Formato de 12 horas sin ceros iniciales 1 hasta 12
G Formato de 24 horas sin ceros iniciales 0 hasta 23
h Formato de 12 horas con ceros iniciales 01 hasta 12
H Formato de 24 horas con ceros iniciales 00 hasta 23
i Minutos con ceros iniciales 00 hasta 59
s Segundos con ceros iniciales 00 hasta 59
u Microsegundos (añadido en PHP 5.2.2). Observe que date() siempre generará 000000 ya que toma un parámetro de tipo integer, mientras que DateTime::format() admite microsegundos si DateTime fue creado con microsegundos. Ejemplo: 654321
v Milisegundos (añadido en PHP 7.0.0). La misma observación se aplica para u. Ejemplo: 654

Y hasta aquí llegaría la explicación sobre todas las posibilidades que tienes con la función PHP date().

Has podido ver como obtener datos referentes a un día de la semana, a una hora, a un mes… y como traducir las nombres de una fecha a tu idioma. Esperamos que te haya servido de ayuda y para cualquier duda solo tienes que contactar con nosotros!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)