Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 25 di 67
  • livello intermedio
Indice lezioni

Gestire le date in PHP

Analizziamo i costrutti e le funzioni per gestire e formattare le date in PHP.
Analizziamo i costrutti e le funzioni per gestire e formattare le date in PHP.
Link copiato negli appunti

Succede molto di frequente di avere la necessità di lavorare con le date. In PHP questo genere di operazioni sono davvero molto semplici grazie alla funzioni a disposizione. Scopriamo insieme le principali.

Gestire il timestamp con la funzione time()

Il timestamp è un sistema di misurazione rappresentato da un intero che indica il numero di secondi a partire da una data definita Unix Epoch. In particolare indica il numero di secondi intercorsi dal 1 gennaio 1970 alle ore 00:00 al momento corrente.

Per recuperare con PHP il timestamp attuale è sufficiente utilizzare la funzione time().

echo time(); // restituirà un valore simile a 1468536917

Operazioni con le date

Ovviamente non è possibile recuperare solo il timestamp corrente ma anche il timestamp di qualsiasi data. In questo caso ci viene incontro la funzione strtotime(). Essa prende in ingresso una stringa che contiene il riferimento temporale che si vuole convertire:

echo strtotime('2015-01-01'); // restituirà 1420066800

Questa funzione ci permette di passare anche valori molto vicini al linguaggio naturale e, di convertirli automaticamente:

echo strtotime("now"); // timestamp corrente
echo strtotime("10 September 2010"); // timestamp del 10 settembre 2010
echo strtotime("+1 day"); // timestamp del giorno successivo a quello corrente
echo strtotime("+1 week"); // timestamp della settimana successiva al giorno corrente
echo strtotime("+1 week 2 days 4 hours 2 seconds"); // timestamp di una settimana, due giorni, 4 ore e 2 secondi rispetto al timestamp corrente
echo strtotime("next Thursday"); // timestamp del prossimo giovedì
echo strtotime("last Monday"); // timestamp dell'ultimo lunedì

Formattare una data

Un'altra operazione piuttosto comune è quella di formattare una specifica data in un formato da noi definito. Ad esempio, supponiamo di dover stampare un timestamp nel formato "gg/mm/aaaa h:m:s", per questo scopo possiamo utilizzare la funzione date():

$timestamp = strtotime("+1 day");
echo date('d/m/Y H:i:s', $timestamp); // stamperà, ad esempio, 17/07/2016 14:30:14

La funzione date() prende in ingresso due parametri:

  1. $format: il formato in cui vogliamo stampare la data;
  2. $timestamp: il timestamp della data da stampare; se non viene passato questo valore verrà preso di default il timestamp corrente.

Il formato impiega dei caratteri standard riservati per formattare la data; nell'esempio precedente abbiamo utilizzato:

Carattere Descrizione
d Indica il giorno con lo 0 iniziale (cioè con lo 0 anche per i giorni inferiori a 10). m Indica il mese con lo 0 iniziale. Y Indica l'anno nel formato a 4 cifre. H Indica le ore con 0 iniziale. i Indica i minuti con 0 iniziale. s Indica i secondi con 0 iniziale.

Vediamo insieme quali sono gli altri caratteri più diffusi oltre quelli appena descritti:

Carattere Descrizione
D Per indicare i primi tre caratteri del giorno (es. Mon, Tue, Wed).
j Equivalente di d ma senza lo 0 (es. 1, 2, 3).
F Il nome del mese completo (es. January, February, ...).
y Equivalente di Y ma con le ultime due cifre (es. 16).

La lista completa dei caratteri per le date è disponibile sulla documentazione ufficiale di PHP.

Vediamo qualche altro esempio di utilizzo della funzione date():

echo date('Y-m-d H:i:s'); // stamperà 2016-07-16 che rappresenta il formato utilizzato per il DATETIME in MySQL
echo date('r'); // stamperà Sat, 16 Jul 2016 14:51:07 +0200
echo date('l, j F Y'); // stamperà Saturday, 16 July 2016

Abbiamo visto come, con la funzione date(), possiamo rappresentare una data nel formato di cui necessitiamo. Vediamo ora come convertire una data da un formato, ad esempio quello anglosassone, nel nostro formato italiano. Il formato anglosassone è rappresentato come mese/giorno/anno ed è anche il formato standard riconosciuto dalla funzione strtotime(). Convertire quindi una data dal formato anglosassone a quello italiano è piuttosto semplice:

$englishDate = '12/15/2016'; // 15 dicembre 2016 nel formato mm/dd/yyyy
$timestamp = strtotime($englishDate); // conterrà 1481756400
echo date('d/m/Y', $timestamp); // stamperà 15/12/2016
echo date('l, j F Y', $timestamp); // stamperà Thursday, 15 December 2016

Ti consigliamo anche