W3docs

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 e IntlDateFormatter para 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, 0112), %d (dia, 0131), %H (24 horas, 0023), %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 %):

php— editable, runs on the server

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()

Significadogmstrftime()gmdate()
Ano com 4 dígitos%YY
Mês (0112)%mm
Dia (0131)%dd
Hora (0023)%HH
Minuto%Mi
Segundo%Ss
Nome completo do mês%BF
Nome completo do dia da semana%Al

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.

Prática

Prática
O que a função gmstrftime() no PHP faz?
O que a função gmstrftime() no PHP faz?
Was this page helpful?