Non so per quale strano motivo, ma la gestione delle date in php è una di quelle cose che non riesce ad entrarmi in testa.
Ogni volta che mi serve, che so, per creare un template per una pagina di eventi, per creare delle condizioni di visualizzazione degli articoli o chissà cos’altro devo sempre partire da zero, fra terminologia e funzioni perdo sempre un mucchio di tempo.
Ho pensato quindi di scrivere un piccolo articolo ‘memo’, da riprendere all’occorrenza e di condividerlo con voi, sia mai che possa servire a qualcun’altro -arrugginito dall’età come me 🙂
Allora, partiamo da un po’ di terminologia:
timestamp
timestamp –> è un NUMERO INTERO che permette di gestire la date in maniera più comoda, e rappresenta il numero di secondi a partire da una data di default (detta UNIX EPOCH)
echo time(); //restituisce ad esempio 1517296931
strtotime()
strtotime()–> è una funzione che restituisce il timestamp di qualsiasi data
echo strtotime('2018-10-15'); //restituisce ad esempio 1539561600 echo strtotime('+2 day'); //restituisce ad esempio 1517470099
per ulteriori esempi si faccia riferimento al manuale php online
esempio concreto
Quindi per formattare una data (ad esempio la data di oggi):
$timestamp= strtotime('now');//trovo il timestamp di oggi echo date('d/m/Y H:i:s', $timestamp); //stampa la data di oggi (nel mio caso 30/01/2018 08:33:20)
La funzione date() che trovate qui sopra ammette due parametri: COME voglio formattare la data e QUALE data voglio sotto forma di timestamp; in altre parole, per usare una terminologia corretta, è
string date ( string $format [, int $timestamp = time() ] )
in html5 con uno sguardo al SEO
Ok. Se io voglio inserire una data in un template html5, il modo giusto per inserirla (anche lato SEO) è:
echo ('<time datetime="').date('c').('"> ').date('Y - m - d').'</time> '; //che restituisce
gestire il fuso orario
Infine se voglio settare l’orario su un fuso specifico, devo usare la funzione date_default_timezone_set(”)
date_default_timezone_set('Europe/Rome'); //definisco il mio fuso $timestamp= strtotime('now'); echo date('d/m/Y H:i:s', $timestamp); //stamperà la data e l'ora con il fuso di Roma