getdate()
Impara la funzione PHP getdate(): sintassi, parametri, array associativo restituito ed esempi pratici per lavorare con date e timestamp.
Introduzione
La funzione PHP getdate() scompone una data nelle sue singole componenti — anno, mese, giorno, ora, nome del giorno della settimana e altro — restituendole come array associativo. Per impostazione predefinita descrive l'ora locale corrente, ma è possibile passare qualsiasi timestamp Unix per descrivere un momento diverso.
Un timestamp Unix è un intero che conta il numero di secondi trascorsi dal 1° gennaio 1970, 00:00:00 UTC (l'"epoca Unix"). Funzioni come time(), mktime() e strtotime() producono tutti timestamp di questo tipo, e getdate() ne trasforma uno in una suddivisione leggibile dall'utente.
Questa pagina illustra la sintassi, ogni chiave dell'array restituito, esempi eseguibili e come getdate() si confronta con la moderna classe DateTime.
Sintassi e Parametri
La sintassi di getdate() è la seguente:
getdate(int $timestamp = time()): arrayIl singolo parametro facoltativo $timestamp è il timestamp Unix da descrivere. Se omesso, getdate() usa come valore predefinito time() — il momento corrente. Il risultato riflette il fuso orario configurato (vedi date_default_timezone_set() o l'impostazione date.timezone in php.ini), quindi imposta il fuso orario se hai bisogno di risultati coerenti tra server diversi.
Valore di Ritorno
getdate() restituisce un array associativo che descrive il timestamp fornito. Ecco una panoramica di ogni chiave:
| Chiave | Valore |
|---|---|
| "seconds" | Secondi (0-59) |
| "minutes" | Minuti (0-59) |
| "hours" | Ore (0-23) |
| "mday" | Giorno del Mese (1-31) |
| "wday" | Giorno della Settimana (0-6, 0=Domenica) |
| "mon" | Mese (1-12) |
| "year" | Anno (es. 2023) |
| "yday" | Giorno dell'Anno (0-365) |
| "weekday" | Nome completo del giorno (es. "Monday") |
| "month" | Nome completo del mese (es. "January") |
| "0" | Timestamp Unix (secondi dal 1° Jan 1970) |
| "zone" | Offset del fuso orario in secondi rispetto a GMT |
Nota: la chiave "0" (il timestamp grezzo) è un intero; le restanti sono interi, tranne "weekday" e "month" che sono stringhe. La chiave "is_dst" era deprecata in PHP 7.0 ed è stata rimossa in PHP 8.0.
Utilizzo ed Esempi
Formattare la data corrente
Chiama getdate(), memorizza il risultato e leggi le chiavi di cui hai bisogno:
L'output sarà qualcosa come: Today is Thursday, March 3, 2023.
Descrivere un timestamp specifico
Passa un timestamp Unix per descrivere un momento diverso da adesso. Qui usiamo un timestamp fisso per rendere l'output riproducibile:
<?php
// 2021-12-25 00:00:00 UTC
$date = getdate(1640390400);
echo $date['weekday'] . ", " . $date['mday'] . " " . $date['month'] . " " . $date['year'] . PHP_EOL;
echo "Day " . $date['yday'] . " of the year, hour " . $date['hours'] . PHP_EOL;Assumendo un fuso orario UTC, questo stampa:
Saturday, 25 December 2021
Day 358 of the year, hour 0Costruire prima un timestamp, poi scomporlo
getdate() si abbina naturalmente a mktime(), che costruisce un timestamp dalle singole componenti:
<?php
// mktime(hour, minute, second, month, day, year)
$timestamp = mktime(9, 30, 0, 7, 4, 2024);
$parts = getdate($timestamp);
echo "{$parts['weekday']} at {$parts['hours']}:{$parts['minutes']}";Questo stampa Thursday at 9:30.
getdate() vs. la classe DateTime
getdate() è comoda per letture rapide e occasionali, ma per qualsiasi operazione che coinvolga aritmetica, confronto o fusi orari, la classe orientata agli oggetti DateTime è la scelta moderna:
DateTimegestisce calcoli sulle date (->add(),->sub(),->diff()) in modo sicuro attraverso i confini di mesi e anni.- Porta con sé un fuso orario esplicito, evitando sorprese dal valore predefinito globale.
- Formatta l'output con
date-formatinvece della concatenazione manuale di stringhe.
Usa getdate() quando hai bisogno solo di alcuni campi da un timestamp; usa DateTime quando devi manipolare o confrontare date.
Conclusione
getdate() trasforma un timestamp Unix in un array associativo con etichette, rendendola un modo rapido per estrarre anno, mese, giorno della settimana o qualsiasi altra componente di una data. Per la visualizzazione e le ricerche semplici è ideale; per l'aritmetica sulle date e la logica consapevole dei fusi orari, preferisci la classe DateTime.