PHP’s date() La funzione è uno degli strumenti più potenti e più utilizzati per gestire la formattazione di date e orari nelle applicazioni web. Che si tratti di creare un blog, una piattaforma di e-commerce o una dashboard, visualizzare le date in modo intuitivo è fondamentale. In questa guida completa,
approfondiremo il date() funzione, approfondirne la sintassi, i specificatori di formato, gli esempi pratici, le migliori pratiche e le insidie più comuni.
Che cos'è la funzione Date() di PHP?
IL date() La funzione in PHP formatta una data e un'ora locali in base a una stringa di formato specificata. Restituisce una stringa che rappresenta la data e l'ora formattate.
Sintassi di base
php
string date(string $format, ?int $timestamp = null)
Formato $: Una stringa contenente specificatori di formato (ad esempio,Y,M,d).$timestamp: Timestamp Unix facoltativo. Se omesso, viene utilizzata l'ora corrente.
Nota: A partire da PHP 8.0, il secondo parametro è nullabile (?int).
Principali specificatori di formato data in PHP
Ecco una tabella di riferimento rapido dei caratteri di formattazione più comunemente utilizzati:
| Specificatore | Descrizione | Esempio di output |
Y | Anno a 4 cifre | 2026 |
y | Anno a 2 cifre | 25 |
M | Mese (01–12) | 11 |
n | Mese senza zeri iniziali (1–12) | 11 |
F | Nome completo del mese | novembre |
M | Nome abbreviato del mese (3 lettere) | novembre |
d | Giorno del mese con zeri iniziali | 17 |
j | Giorno senza zeri iniziali | 17 |
l | Nome completo dei giorni feriali | Lunedì |
D | Giorno feriale breve (3 lettere) | Lun |
H | Formato 24 ore (00–23) | 11 |
h | Formato a 12 ore (01–12) | 11 |
i | Minuti con zeri iniziali | 37 |
S | Secondi con zeri iniziali | 45 |
UN | Maiuscolo AM/PM | AM |
a | "am" e "pm" in minuscolo | sono |
T | Abbreviazione del fuso orario | IST |
c | Formato ISO 8601 | 17 novembre 2026, ore 11:37:45 +05:30 |
r | Formato RFC 2822 | Lunedì, 17 novembre 2026, ore 11:37:45 +0530 |
Esempi di base sul formato delle date in PHP
1. Data e ora attuali
php
echo data(‘G-m-g H:i:s’);
// Risultato: 17/11/2026 11:37:452. Formato leggibile dall'uomo
php
echo data(‘l, F j, Y \a\t g:i A’);
// Risultato: lunedì 17 novembre 2026 alle 11:37Utilizzo \ per sfuggire a caratteri come a così appaiono letteralmente.
3. Data breve
php
echo date('g/m/A');
// Data di emissione: 17/11/20264. Solo ora
php
echo date('h:i A');
// Risultato: 11:37 AMLavorare con i timestamp
È possibile formattare qualsiasi timestamp Unix:
php
$timestamp = strtotime('2026-01-01 00:00:00');
echo date('Y-m-d', $timestamp);
// Risultato: 01/01/2026Abbinare con strtotime()
php
echo date('F j, Y', strtotime('+7 days'));
// Data di emissione: 24 novembre 2026Gestione dei fusi orari (Importante!)
Per impostazione predefinita, date() utilizza il fuso orario predefinito del server. Impostarlo sempre in modo esplicito:
php
date_default_timezone_set('Asia/Kolkata'); // IST
echo date('A-m-g H:i:s T');
// Risultato: 17 novembre 2026, ore 11:37:45 ISTMigliori pratiche: Imposta il fuso orario all'inizio del file di configurazione o nel punto di ingresso.
Casi d'uso reali per il formato data in PHP
1. Date dei post sul blog
php
$post_date = '2026-11-10 14:30:00';
echo date('M j, Y', strtotime($post_date));
// Risultato: 10 novembre 20262. Tempo relativo (“2 ore fa”)
php
funzione timeAgo($timestamp) {
$diff = time() - $timestamp;
if ($diff < 60) return "$diff secondi fa";
if ($diff < 3600) return round($diff/60) . " minuti fa";
if ($diff < 86400) return round($diff/3600) . " ore fa";
return date('M j', $timestamp);
}
echo timeAgo(strtotime('2026-11-17 09:00:00'));
// Risultato: 2 ore fa3. Conto alla rovescia per l'evento
php
$event = strtotime('25/12/2026 00:00:00');
$now = time();
$days_left = floor(($event - $now) / 86400);
echo "Mancano $days_left giorni a Natale!";
// Risultato: Mancano 38 giorni a Natale!Errori comuni e come evitarli
| Problema | Soluzione |
| Fuso orario errato | Utilizzare sempre date_default_timezone_set() |
Bug simili a quelli dell'anno 2000 con y | Preferire Y per l'intero anno |
| Confusione sugli zeri iniziali | Utilizzo j invece di d se non vuoi gli zeri |
| Problemi legati alle impostazioni locali | Utilizzo setlocale() + strftime() per i nomi localizzati |
| Sarà deprecato in futuro? | No! Ma pensa un po'... Data e ora per operazioni complesse |
Consigli da esperti
1. Utilizzo Data e ora per esigenze avanzate
2. php
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
3. echo $dt->format('Y-m-d H:i:s');
4. Date formattate nella cache
Evita di chiamare date() in cicli per migliorare le prestazioni.
5. Verifica la validità dei timestamp di input
6. php
if ($timestamp === false) {
$timestamp = time();
7. }
8. Internazionalizzazione
9. php
setlocale(LC_TIME, 'hi_IN');
10. echo strftime('%e %B %Y'); // Data in hindi
Bonus: Formati di data in una sola riga
php// ISOdate('c');
// Formato statunitensedate('m/d/Y h:i A');
// Formato UEdate('d.m.Y H:i');
Conclusione
Masterizzazione date() si tratta di comprenderne il specificatori di formato, gestione dei fusi orari, E integrazione con strtotime(). Mentre Data e ora offre maggiore potenza per scenari complessi, date() rimane leggero, veloce e perfetto per 90% di casi d'uso. Carmatec, un leader Società di sviluppo PHP, sfrutta queste caratteristiche per offrire funzionalità temporali precise, efficienti e affidabili.