gmdate()
Aprende la función gmdate() de PHP: formatea una fecha y hora UTC/GMT, su sintaxis, parámetros, caracteres de formato comunes y ejemplos ejecutables.
Introducción
La función gmdate() formatea un timestamp de Unix como una cadena de fecha y hora legible en GMT/UTC, ignorando la zona horaria configurada en el servidor. Es la contraparte exclusiva para UTC de date(): ambas usan los mismos caracteres de formato, pero gmdate() siempre devuelve la hora en Hora del Meridiano de Greenwich. Esto la convierte en la herramienta adecuada cuando se necesita un valor independiente de la zona horaria — registrar un evento, construir una cabecera HTTP o almacenar un timestamp normalizado que todos los servidores y clientes interpreten de la misma manera.
Esta guía cubre la sintaxis, los parámetros, los caracteres de formato más comunes, las diferencias entre gmdate() y date(), y varios ejemplos ejecutables.
Sintaxis
gmdate(string $format, ?int $timestamp = null): stringParámetros
$format(obligatorio) — Una cadena de caracteres de formato que se reemplazan con los valores correspondientes de fecha y hora. Cualquier carácter no reconocido como especificador de formato se imprime tal cual. Para imprimir una letra literal que de otro modo sería interpretada, escápela con una barra inversa (por ejemplo,\T).$timestamp(opcional) — Un timestamp de Unix (segundos transcurridos desde el 1 de enero de 1970, 00:00:00 UTC). Cuando se omite o esnull, se usa la hora actual.
La función devuelve la fecha y hora formateada como una cadena, siempre expresada en UTC independientemente de date_default_timezone_set() o la configuración date.timezone del servidor.
Caracteres de formato comunes
Estos son los especificadores que usará con más frecuencia. Son idénticos a los utilizados por date().
| Carácter | Significado | Ejemplo |
|---|---|---|
Y | Año con 4 dígitos | 2026 |
m | Mes, 2 dígitos con cero inicial | 06 |
d | Día del mes, 2 dígitos | 04 |
H | Hora, formato de 24 horas (00–23) | 05 |
i | Minutos (00–59) | 45 |
s | Segundos (00–59) | 57 |
D | Día de la semana, texto corto | Sun |
M | Mes, texto corto | Mar |
T | Abreviatura de la zona horaria | GMT |
U | Segundos desde el epoch de Unix | 1646372757 |
Ejemplos
Ejemplo 1: Imprimir la fecha y hora actual en GMT/UTC
Sin argumento de timestamp, gmdate() formatea el momento actual en UTC.
Ejemplo 2: Formatear la fecha y hora con especificadores personalizados
Un patrón común es construir un timestamp legible al estilo RFC. Como gmdate() es UTC, el especificador T siempre imprime GMT.
Ejemplo 3: Formatear un timestamp específico
Pase un timestamp de Unix como segundo argumento para formatear un punto fijo en el tiempo en lugar de "ahora".
gmdate() vs date()
date() formatea un timestamp usando la zona horaria local configurada para el script, mientras que gmdate() siempre formatea en UTC. Con el mismo timestamp, ambas devuelven la misma cadena solo cuando la zona horaria local es UTC.
<?php
date_default_timezone_set('America/New_York');
$timestamp = 1646372757;
echo date('Y-m-d H:i:s', $timestamp); // 2022-03-04 00:45:57 (local, UTC-5)
echo "\n";
echo gmdate('Y-m-d H:i:s', $timestamp); // 2022-03-04 05:45:57 (UTC)Use gmdate() cuando el valor deba ser independiente de la zona horaria (registros, cabeceras HTTP Date, respuestas de API, almacenamiento en base de datos). Use date() cuando esté mostrando una hora a un usuario en su zona local.
Cuándo usar gmdate()
- Registro estandarizado — almacene timestamps en UTC para que las entradas de servidores en diferentes regiones sean comparables.
- Cabeceras HTTP y caché — cabeceras como
ExpiresyLast-Modifieddeben expresarse en GMT. - APIs e intercambio de datos — devuelva UTC para que los clientes puedan convertir a cualquier zona local de manera confiable.
Para el manejo de fechas orientado a objetos con conversión explícita de zonas horarias, se prefieren las clases DateTime y DateTimeZone. Para construir los timestamps que se pasan a gmdate(), consulte gmmktime() (UTC) y mktime() (hora local).
Conclusión
La función gmdate() proporciona una manera sencilla de formatear fechas y horas en UTC, utilizando los mismos caracteres de formato que date() pero siempre anclada a GMT. Esta guía cubrió su sintaxis, parámetros, los caracteres de formato más comunes, la diferencia con date(), y ejemplos prácticos para ayudarle a integrarla en sus proyectos. Para más información sobre el trabajo con fechas en PHP, consulte la descripción general de Fecha y Hora en PHP.