W3docs

gmstrftime()

Cos'è la funzione gmstrftime() in PHP? Formattava data e ora nella timezone UTC/GMT con specificatori stile strftime(). Deprecata in PHP 8.1, rimossa in 8.2.

Cos'è la funzione gmstrftime() in PHP?

La funzione gmstrftime() formattava data e ora come stringa nel fuso orario UTC/GMT, usando specificatori % in stile strftime() il cui testo poteva essere localizzato tramite il locale corrente (impostato con setlocale()). Si comportava esattamente come strftime(), con la differenza che l'output era sempre in GMT anziché nell'ora locale del server.

Importante: gmstrftime() è stata deprecata in PHP 8.1 e rimossa in PHP 8.2. Non esiste più nel PHP moderno, quindi il nuovo codice deve utilizzare un'alternativa. Il resto di questa pagina spiega la funzione a scopo di riferimento e mostra gli equivalenti da utilizzare oggi: gmdate() per formati fissi e IntlDateFormatter per l'output localizzato.

Questa pagina tratta la firma originale e gli specificatori di formato, il sostituto moderno gmdate(), come mappare i vecchi specificatori % ai nuovi caratteri di formato, e come ottenere nel modo corretto i nomi localizzati di mesi e giorni della settimana.

Sintassi

string gmstrftime(string $format, ?int $timestamp = null)
  • $format — una stringa di specificatori % che descrivono l'output desiderato.
  • $timestamp — un timestamp Unix opzionale. Se omesso, viene utilizzata l'ora corrente.

Specificatori comuni accettati: %Y (anno a 4 cifre), %m (mese, 0112), %d (giorno, 0131), %H (24 ore, 0023), %M (minuto), %S (secondo), %B (nome completo del mese), %A (nome completo del giorno della settimana).

Il sostituto moderno: gmdate()

Poiché gmstrftime() non esiste più, il sostituto diretto per formati fissi e in stile macchina è gmdate(). Produce anch'essa output in UTC, ma utilizza caratteri di formato in stile date() (senza %):

php— editable, runs on the server

Questo restituisce la data e l'ora UTC correnti nel formato YYYY-MM-DD HH:MM:SS, ad esempio 2026-06-21 08:04:38.

Mappatura dei vecchi specificatori su gmdate()

Significatogmstrftime()gmdate()
Anno a 4 cifre%YY
Mese (0112)%mm
Giorno (0131)%dd
Ora (0023)%HH
Minuto%Mi
Secondo%Ss
Nome completo del mese%BF
Nome completo del giorno%Al

Quindi gmstrftime("%A, %d %B %Y") diventa gmdate("l, d F Y").

Formattazione UTC con supporto del locale

L'unica cosa che gmdate() non fa è tradurre i nomi di mesi e giorni della settimana nel locale corrente — gmdate() restituisce sempre nomi in inglese. Se si faceva affidamento su gmstrftime() con setlocale() per l'output tradotto (ad esempio i nomi dei mesi in francese), utilizzare invece IntlDateFormatter dall'estensione intl:

<?php
$formatter = new IntlDateFormatter(
    'fr_FR',
    IntlDateFormatter::FULL,
    IntlDateFormatter::NONE,
    'UTC'
);
echo $formatter->format(time());
?>

Questo stampa la data completa con i nomi di mesi e giorni della settimana in francese, in UTC — il moderno equivalente sicuro rispetto al vecchio schema setlocale() + gmstrftime().

Perché la formattazione UTC è importante

Formattare in UTC (come facevano gmstrftime() e ora gmdate()) è utile ogni volta che si memorizzano o confrontano timestamp indipendentemente dal fuso orario dell'utente. Log, risposte API, valori nel database e pianificazioni multi-regione traggono tutti vantaggio da un riferimento unico e non ambiguo. La conversione al fuso orario locale avviene solo al momento della visualizzazione — tipicamente con le classi DateTime / DateTimeZone.

Conclusione

gmstrftime() offriva un modo rapido per formattare data e ora UTC con specificatori in stile strftime(), ma è stata rimossa in PHP 8.2. Per i formati fissi, sostituirla con gmdate() e tradurre gli specificatori usando la tabella sopra; per i nomi di mesi e giorni localizzati, utilizzare IntlDateFormatter. Per esplorare funzioni correlate, vedere strftime(), gmmktime() e la guida generale su data e ora in PHP.

Esercitazione

Pratica
Cosa fa la funzione gmstrftime() in PHP?
Cosa fa la funzione gmstrftime() in PHP?
Was this page helpful?