gmdate()
Scopri la funzione PHP gmdate(): formatta una data e ora UTC/GMT, sintassi, parametri, caratteri di formato, differenze con date() ed esempi eseguibili.
Introduzione
La funzione gmdate() formatta un timestamp Unix come stringa di data e ora leggibile in GMT/UTC, ignorando il fuso orario configurato nel server. È la controparte esclusivamente UTC di date(): entrambe accettano gli stessi caratteri di formato, ma gmdate() restituisce sempre l'orario in Greenwich Mean Time. Questo la rende lo strumento ideale ogni volta che serve un valore indipendente dal fuso orario — per registrare un evento, costruire un header HTTP o memorizzare un timestamp normalizzato che ogni server e client interpreta allo stesso modo.
Questa guida tratta la sintassi, i parametri, i caratteri di formato più comuni, le differenze tra gmdate() e date(), e vari esempi eseguibili.
Sintassi
gmdate(string $format, ?int $timestamp = null): stringParametri
$format(obbligatorio) — Una stringa di caratteri di formato sostituiti con i valori di data/ora corrispondenti. Qualsiasi carattere non riconosciuto come identificatore di formato viene stampato così com'è. Per stampare una lettera letterale che altrimenti sarebbe interpretata, è necessario farla precedere da una barra rovesciata (ad esempio\T).$timestamp(opzionale) — Un timestamp Unix (secondi trascorsi dal 1° gennaio 1970, 00:00:00 UTC). Se omesso onull, viene usato il momento corrente.
La funzione restituisce la data/ora formattata come stringa, sempre espressa in UTC indipendentemente da date_default_timezone_set() o dall'impostazione date.timezone del server.
Caratteri di formato più comuni
Questi sono gli identificatori usati più di frequente. Sono identici a quelli usati da date().
| Carattere | Significato | Esempio |
|---|---|---|
Y | Anno a 4 cifre | 2026 |
m | Mese, 2 cifre con zero iniziale | 06 |
d | Giorno del mese, 2 cifre | 04 |
H | Ora, formato 24 ore (00–23) | 05 |
i | Minuti (00–59) | 45 |
s | Secondi (00–59) | 57 |
D | Giorno della settimana, testo abbreviato | Sun |
M | Mese, testo abbreviato | Mar |
T | Abbreviazione del fuso orario | GMT |
U | Secondi dall'epoca Unix | 1646372757 |
Esempi
Esempio 1: Stampare la data e l'ora GMT/UTC correnti
Senza argomento timestamp, gmdate() formatta il momento corrente in UTC.
Esempio 2: Formattare la data e l'ora con identificatori personalizzati
Uno schema comune è costruire un timestamp leggibile in stile RFC. Poiché gmdate() è UTC, l'identificatore T stampa sempre GMT.
Esempio 3: Formattare un timestamp specifico
Passare un timestamp Unix come secondo argomento per formattare un punto fisso nel tempo invece di "adesso".
gmdate() vs date()
date() formatta un timestamp usando il fuso orario locale configurato per lo script, mentre gmdate() formatta sempre in UTC. Dato lo stesso timestamp, le due funzioni restituiscono la stessa stringa solo quando il fuso orario locale è 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)Usare gmdate() quando il valore deve essere indipendente dal fuso orario (log, header HTTP Date, risposte API, archiviazione nel database). Usare date() quando si visualizza un orario all'utente nel suo fuso locale.
Quando usare gmdate()
- Logging standardizzato — memorizzare i timestamp in UTC così che le voci provenienti da server in regioni diverse rimangano confrontabili.
- Header HTTP e caching — header come
ExpireseLast-Modifieddevono essere espressi in GMT. - API e scambio dati — restituire UTC affinché i client possano convertire in qualsiasi fuso locale in modo affidabile.
Per la gestione orientata agli oggetti delle date con conversione esplicita del fuso orario, preferire le classi DateTime e DateTimeZone. Per costruire i timestamp da passare a gmdate(), vedere gmmktime() (UTC) e mktime() (ora locale).
Conclusione
La funzione gmdate() offre un modo diretto per formattare date e orari in UTC, usando gli stessi caratteri di formato di date() ma sempre ancorata al GMT. Questa guida ne ha illustrato la sintassi, i parametri, i caratteri di formato più comuni, la differenza rispetto a date() e degli esempi pratici per aiutarti a integrarla nei tuoi progetti. Per ulteriori informazioni sul lavoro con le date in PHP, consulta la panoramica PHP Date and Time.