Nei primi tutorial che si seguono mentre ci si avvicina a PHP, date è tra le prime funzioni che conosciamo. Introdotta dalla versione 4 di PHP, “date” permette di formattare una data nel formato che si desidera. 

string date ( string $format [, int $timestamp = time() ] )

PHP date: tutto ciò che devi sapere

Come notiamo dalla definizione, ‘date’ restituisce una stringa e ha  due parametri: il formato, obbligatorio e un intero facoltativo, il timestamp. Se non specificato, il timestamp si riferisce al secondo esatto in cui la funzione date viene eseguita.

Il timestamp (unix timestamp) corrisponde al numero di secondi trascorsi dal 1 Gennaio 1970 ad oggi. Di default la funzione timestamp() restituisce il timestamp attuale secondo la timezone definita su PHP. Per definire una timezone specifica è possibile usare la funzione date_default_timezone_set:

date_default_timezone_set('Europe/Rome');

Per maggiori informazioni su questa funzione, vai alla documentazione ufficiale.

Ma torniamo alla funzione date(). Vediamo come formattare una data in modo personalizzato. Supponiamo che dal nostro database otteniamo un record che ha un campo con una data in formato DATETIME, ad esempio

2017-05-25 16:43:18

Non vogliamo che questa data venga mostrata in questo modo sulla nostra pagina web, ma vogliamo convertirla in un formato più vicino a quello comunemente utilizzato in Italia.

$date = '2017-05-25 16:43:18';

echo date("d/m/Y H:i:s", strtotime($date));

Notiamo che $date è una stringa contenente la nostra data. Vediamo anche una nuova funzione, strtotime(), che permette di convertire una stringa in timestamp. Per maggiori informazioni su strtotime(), vai alla documentazione ufficiale.

Nel caso specifico strtotime($date) restituirà 1495726998, cioè il numero di secondi passati dal 1° Gennaio 1970 a quella data.

La stringa “d/m/Y H:i:s” invece definisce l’ordine e il formato di ogni elemento della data formattata che vogliamo. La funzione restituirà

25/05/2017 16:43:18

e verrà mostrata a video da echo.

Ecco una definizione dei placeholder utilizzati:

d = numero del giorno a due cifre
m = numero del mese a due cifre
Y = anno a 4 cifre
H = ore formato 24 ore
i = minuti a 2 cifre
s = secondi a 2 cifre

Ma facciamo ancora qualche altro esempio preso dalla documentazione per capire meglio e vedere altri placeholder.

// Supponiamo che oggi sia il 10 Marzo 2001, ore 17:16:18
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18

Vediamo dall’esempio che è possibile aggiungere lettere personalizzate a patto di usare il carattere di escape \ sia con apici sia con doppi apici.

Vi invitiamo comunque a dare sempre un’occhiata alla documentazione ufficiale della funzione PHP date per l’elenco completo di tutti i placeholder.