W3docs

getdate()

Aprende la función PHP getdate(): sintaxis, parámetros, el array asociativo que devuelve y ejemplos ejecutables para trabajar con fechas y marcas de tiempo.

Introducción

La función PHP getdate() descompone una fecha en sus partes individuales — año, mes, día, hora, nombre del día de la semana y más — y las devuelve como un array asociativo. Por defecto describe la hora local actual, pero puedes pasar cualquier marca de tiempo Unix para describir un momento diferente.

Una marca de tiempo Unix es un entero que cuenta el número de segundos transcurridos desde el 1 de enero de 1970, 00:00:00 UTC (el "epoch Unix"). Funciones como time(), mktime() y strtotime() producen este tipo de marcas de tiempo, y getdate() convierte una de ellas en un desglose legible para humanos.

Esta página cubre la sintaxis, cada clave del array devuelto, ejemplos ejecutables y cómo se compara getdate() con la clase moderna DateTime.

Sintaxis y parámetros

La sintaxis de getdate() es la siguiente:

getdate(int $timestamp = time()): array

El único parámetro opcional $timestamp es la marca de tiempo Unix a describir. Si se omite, getdate() usa por defecto time() — el momento actual. El resultado refleja la zona horaria configurada (consulta date_default_timezone_set() o la configuración date.timezone en php.ini), así que establece tu zona horaria si necesitas resultados consistentes entre servidores.

Valor de retorno

getdate() devuelve un array asociativo que describe la marca de tiempo indicada. A continuación se detalla cada clave:

ClaveValor
"seconds"Segundos (0-59)
"minutes"Minutos (0-59)
"hours"Horas (0-23)
"mday"Día del mes (1-31)
"wday"Día de la semana (0-6, 0=domingo)
"mon"Mes (1-12)
"year"Año (p. ej., 2023)
"yday"Día del año (0-365)
"weekday"Nombre completo del día (p. ej., "Monday")
"month"Nombre completo del mes (p. ej., "January")
"0"Marca de tiempo Unix (segundos desde el 1 ene 1970)
"zone"Desplazamiento de zona horaria en segundos respecto a GMT

Nota: la clave "0" (la marca de tiempo en bruto) es un entero; el resto son enteros excepto "weekday" y "month", que son string. La clave "is_dst" fue deprecada en PHP 7.0 y eliminada en PHP 8.0.

Uso y ejemplos

Dar formato a la fecha actual

Llama a getdate(), almacena el resultado y lee las claves que necesites:

php— editable, runs on the server

Esto produce algo como: Today is Thursday, March 3, 2023.

Describir una marca de tiempo específica

Pasa una marca de tiempo Unix para describir un momento distinto al actual. Aquí usamos una marca de tiempo fija para que la salida sea reproducible:

<?php

// 2021-12-25 00:00:00 UTC
$date = getdate(1640390400);

echo $date['weekday'] . ", " . $date['mday'] . " " . $date['month'] . " " . $date['year'] . PHP_EOL;
echo "Day " . $date['yday'] . " of the year, hour " . $date['hours'] . PHP_EOL;

Asumiendo una zona horaria UTC, esto imprime:

Saturday, 25 December 2021
Day 358 of the year, hour 0

Crear primero una marca de tiempo y luego descomponerla

getdate() se combina de forma natural con mktime(), que construye una marca de tiempo a partir de partes individuales:

<?php

// mktime(hour, minute, second, month, day, year)
$timestamp = mktime(9, 30, 0, 7, 4, 2024);
$parts = getdate($timestamp);

echo "{$parts['weekday']} at {$parts['hours']}:{$parts['minutes']}";

Esto imprime Thursday at 9:30.

getdate() frente a la clase DateTime

getdate() es conveniente para lecturas rápidas y puntuales, pero para cualquier operación que implique aritmética, comparación o zonas horarias, la clase orientada a objetos DateTime es la opción moderna:

  • DateTime maneja la aritmética de fechas (->add(), ->sub(), ->diff()) de forma segura a través de límites de mes y año.
  • Lleva una zona horaria explícita, evitando sorpresas derivadas del valor predeterminado global.
  • Formatea la salida con date-format en lugar de concatenación manual de cadenas.

Usa getdate() cuando solo necesites unos pocos campos de una marca de tiempo; usa DateTime cuando necesites manipular o comparar fechas.

Conclusión

getdate() convierte una marca de tiempo Unix en un array asociativo etiquetado, lo que la convierte en una forma rápida de extraer el año, el mes, el día de la semana o cualquier otro componente de una fecha. Para visualización y consultas simples es ideal; para aritmética de fechas y lógica con conocimiento de zona horaria, es preferible la clase DateTime.

Práctica

Práctica
¿Qué hace la función PHP getdate()?
¿Qué hace la función PHP getdate()?
Was this page helpful?