W3docs

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

Il 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:

ChiaveValore
"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:

php— editable, runs on the server

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 0

Costruire 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:

  • DateTime gestisce 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-format invece 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.

Esercizio

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