Gestire le date in PHP

22 luglio 2016

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ì

L’elenco completo dei formati supportati è disponibile su questo link.

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:

CarattereDescrizione
dIndica il giorno con lo 0 iniziale (cioè con lo 0 anche per i giorni inferiori a 10).
mIndica il mese con lo 0 iniziale.
YIndica l’anno nel formato a 4 cifre.
HIndica le ore con 0 iniziale.
iIndica i minuti con 0 iniziale.
sIndica i secondi con 0 iniziale.

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

CarattereDescrizione
DPer indicare i primi tre caratteri del giorno (es. Mon, Tue, Wed).
jEquivalente di d ma senza lo 0 (es. 1, 2, 3).
FIl nome del mese completo (es. January, February, …).
yEquivalente 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

Tutte le lezioni

1 ... 24 25 26 ... 56

Se vuoi aggiornamenti su Gestire le date in PHP inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Gestire le date in PHP

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy