gmdate()
Aprenda a função PHP gmdate(): formatar datas e horas em UTC/GMT, sintaxe, parâmetros, caracteres de formato e exemplos práticos.
Introdução
A função gmdate() formata um timestamp Unix como uma string de data e hora legível em GMT/UTC, ignorando o fuso horário configurado no servidor. É o equivalente exclusivamente UTC de date(): ambas utilizam os mesmos caracteres de formato, mas gmdate() sempre retorna o horário em Greenwich Mean Time. Isso a torna a ferramenta ideal sempre que você precisa de um valor independente de fuso horário — para registrar um evento em log, construir um cabeçalho HTTP ou armazenar um timestamp normalizado que todos os servidores e clientes interpretem da mesma forma.
Este guia aborda a sintaxe, os parâmetros, os caracteres de formato mais comuns, como gmdate() difere de date() e vários exemplos executáveis.
Sintaxe
gmdate(string $format, ?int $timestamp = null): stringParâmetros
$format(obrigatório) — Uma string de caracteres de formato que são substituídos pelos valores correspondentes de data/hora. Qualquer caractere não reconhecido como especificador de formato é impresso como está. Para exibir uma letra literal que de outra forma seria interpretada, use uma barra invertida como escape (por exemplo,\T).$timestamp(opcional) — Um timestamp Unix (segundos decorridos desde 1º de janeiro de 1970, 00:00:00 UTC). Quando omitido ounull, o horário atual é utilizado.
A função retorna a data/hora formatada como uma string, sempre expressa em UTC independentemente de date_default_timezone_set() ou da configuração date.timezone do servidor.
Caracteres de formato comuns
Estes são os especificadores mais utilizados. Eles são idênticos aos usados por date().
| Caractere | Significado | Exemplo |
|---|---|---|
Y | Ano com 4 dígitos | 2026 |
m | Mês, 2 dígitos com zero à esquerda | 06 |
d | Dia do mês, 2 dígitos | 04 |
H | Hora, formato 24 horas (00–23) | 05 |
i | Minutos (00–59) | 45 |
s | Segundos (00–59) | 57 |
D | Dia da semana, texto abreviado | Sun |
M | Mês, texto abreviado | Mar |
T | Abreviação do fuso horário | GMT |
U | Segundos desde o epoch Unix | 1646372757 |
Exemplos
Exemplo 1: Exibir a data e hora atuais em GMT/UTC
Sem argumento de timestamp, gmdate() formata o momento atual em UTC.
Exemplo 2: Formatar a data e hora com especificadores personalizados
Um padrão comum é construir um timestamp legível no estilo RFC. Como gmdate() é UTC, o especificador T sempre imprime GMT.
Exemplo 3: Formatar um timestamp específico
Passe um timestamp Unix como segundo argumento para formatar um ponto fixo no tempo em vez do "agora".
gmdate() vs date()
date() formata um timestamp usando o fuso horário local configurado para o script, enquanto gmdate() sempre formata em UTC. Dado o mesmo timestamp, as duas retornam a mesma string apenas quando o fuso horário local é 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() quando o valor precisa ser independente de fuso horário (logs, cabeçalhos HTTP Date, respostas de API, armazenamento em banco de dados). Use date() quando estiver exibindo um horário para o usuário em seu fuso local.
Quando usar gmdate()
- Registro padronizado — armazene timestamps em UTC para que entradas de servidores em diferentes regiões permaneçam comparáveis.
- Cabeçalhos HTTP e cache — cabeçalhos como
ExpireseLast-Modifieddevem ser expressos em GMT. - APIs e troca de dados — retorne UTC para que os clientes possam converter para qualquer fuso local de forma confiável.
Para tratamento orientado a objetos de datas com conversão explícita de fuso horário, prefira as classes DateTime e DateTimeZone. Para construir os timestamps passados a gmdate(), consulte gmmktime() (UTC) e mktime() (horário local).
Conclusão
A função gmdate() oferece uma maneira direta de formatar datas e horas em UTC, usando os mesmos caracteres de formato de date(), mas sempre ancorada ao GMT. Este guia abordou sua sintaxe, parâmetros, os caracteres de formato mais comuns, a diferença em relação a date() e exemplos práticos para ajudá-lo a integrá-la em seus projetos. Para mais informações sobre como trabalhar com datas em PHP, consulte a visão geral de Data e Hora em PHP.