gmstrftime()
O que é a função gmstrftime() no PHP? A função gmstrftime() no PHP é uma ferramenta poderosa usada para formatar data e hora no fuso UTC/GMT. O
O que é a função gmstrftime() no PHP?
A função gmstrftime() formatava uma data e hora como uma string no fuso horário UTC/GMT, usando especificadores % no estilo strftime() cujo texto podia ser localizado através da configuração de localidade atual (definida com setlocale()). Ela se comportava exatamente como strftime(), exceto que a saída era sempre GMT em vez do horário local do servidor.
Importante:
gmstrftime()foi descontinuada no PHP 8.1 e removida no PHP 8.2. Ela não existe mais no PHP moderno, portanto, o novo código deve usar uma alternativa. O restante desta página explica a função para referência e mostra os equivalentes que você deve usar hoje:gmdate()para formatos fixos eIntlDateFormatterpara saída sensível à localidade.
Esta página cobre a assinatura original e os especificadores de formato, a substituição moderna gmdate(), como mapear os especificadores % antigos para os novos caracteres de formato, e como obter nomes de meses/dias traduzidos para a localidade da maneira correta.
Sintaxe
string gmstrftime(string $format, ?int $timestamp = null)$format— uma string de especificadores%descrevendo a saída desejada.$timestamp— um timestamp Unix opcional. Quando omitido, o horário atual é usado.
Especificadores comuns aceitos: %Y (ano com 4 dígitos), %m (mês, 01–12), %d (dia, 01–31), %H (24 horas, 00–23), %M (minuto), %S (segundo), %B (nome completo do mês), %A (nome completo do dia da semana).
A substituição moderna: gmdate()
Como gmstrftime() não existe mais, a substituição direta para formatos fixos no estilo de máquina é gmdate(). Ela também produz saída UTC, mas usa caracteres de formato no estilo date() (sem %):
Isso gera a data e hora UTC atual no formato YYYY-MM-DD HH:MM:SS, por exemplo 2026-06-21 08:04:38.
Mapeando especificadores antigos para gmdate()
| Significado | gmstrftime() | gmdate() |
|---|---|---|
| Ano com 4 dígitos | %Y | Y |
Mês (01–12) | %m | m |
Dia (01–31) | %d | d |
Hora (00–23) | %H | H |
| Minuto | %M | i |
| Segundo | %S | s |
| Nome completo do mês | %B | F |
| Nome completo do dia da semana | %A | l |
Portanto, gmstrftime("%A, %d %B %Y") se torna gmdate("l, d F Y").
Formatação UTC sensível à localidade
O único aspecto que gmdate() não faz é traduzir os nomes de meses e dias da semana para a localidade atual — gmdate() sempre retorna nomes em inglês. Se você dependia de gmstrftime() com setlocale() para saída traduzida (por exemplo, nomes de meses em francês), use IntlDateFormatter da extensão intl em vez disso:
<?php
$formatter = new IntlDateFormatter(
'fr_FR',
IntlDateFormatter::FULL,
IntlDateFormatter::NONE,
'UTC'
);
echo $formatter->format(time());
?>Isso imprime a data completa com nomes de meses e dias da semana em francês, em UTC — o equivalente moderno e seguro para localidade do antigo padrão setlocale() + gmstrftime().
Por que a formatação UTC é importante
Formatar em UTC (o que gmstrftime() e agora gmdate() fazem) é útil sempre que você armazena ou compara timestamps independentemente do fuso horário do usuário. Registro de logs, respostas de API, valores de banco de dados e agendamento entre regiões se beneficiam de uma referência única e inequívoca. Você converte para um fuso horário local apenas no momento da exibição — normalmente com as classes DateTime / DateTimeZone.
Conclusão
gmstrftime() oferecia uma maneira rápida de formatar data e hora UTC com especificadores no estilo strftime(), mas foi removida no PHP 8.2. Para formatos fixos, substitua-a por gmdate() e traduza os especificadores usando a tabela acima; para nomes de meses e dias traduzidos para a localidade, use IntlDateFormatter. Para explorar funções relacionadas, consulte strftime(), gmmktime() e o guia completo de data e hora em PHP.