Le date in Php e Mysql
13/09/2011Prima di tutto definiamo il significato di Timestamp, elemento di base per utilizzare le date in Php.
Timestamp rappresenta il numero di secondi trascorsi dallo Unix Time, ovvero il 1 gennaio 1970 ore 00:00.
Scrivendo l'istruzione
echo time();
visualizzeremo dunque un valore simile a 1315926652.
Mysql invece ha tre tipi di date, DATETIME, DATE, e TIMESTAMP.
DATETIME memorizza data e ora come stringa nel formato YYYY-MM-DD HH:MM:SS (es. 2010-12-25 16:41:35).
DATE usa solo la parte data YYYY-MM-DD (es. 2010-12-25).
Attenzione, TIMESTAMP non ha nulla a che fare con il valor indicato prima per PHP!
La colonna TIMESTAMP di Mysql è un DATETIME che automaticamnte aggiorna la data ad ogni modifica del record.
Esistono due funzioni Php che permettono il passaggio da un formato all'altro:
$mysql_data = date( 'Y-m-d H:i:s', $php_data ) prende una data in formato Php nel secondo parametro e la trasforma in datetime.
$php_data = strtotime( $mysql_data ) fa l'operazione inversa.
Ritorniamo alle date in Php.
La funzione date utilizza le lettere per formattare diversamente l'output.
Usiamo ad esempio
echo date("d/m/y");
In questo caso le tre lettere rappresentano rispettivamente:
d: il giorno del mese con valore da 01 a 31.
m: il mese corrente con valore numerico da 01 a 12.
y: l'anno corrente espresso con due cifre da 00 a 99
Fra le tre lettere possiamo inserire il carattere che separerà i tre valori in output.
Vediamo quali altri parametri di formattazione possiamo utilizzare attraverso le lettere.
Data e ora completi:
r: Mostra data ora e timezone completi senza necessità di inserire tutti i parametri, quindi date("r"); equivale a date("D, d M Y H:i:s O");
Time:
a: am o pm
A: AM o PM
g: ora senza gli zeri, da 1 a 12.
G: ora in formato 24h senza gli zeri, da 0 a 23.
h: ora con gli zeri, da 01 a 12.
H: ora in formato 24h con gli zeri, da 00 a 23.
i: minuti con gli zeri, da 00 a 59.
s: secondi con gli zeri, da 00 a 59.
Day:
d: Giorno del mese con gli zeri, da 01 a 31.
j: Giorno del mese senza gli zeri, da 1 a 31.
D: Giorno della settimana abbreviato, da Sun a Sat (in inglese partendo dalla domenica!).
l: Giorno della settimana, da Sunday a Saturday (in inglese partendo dalla domenica!).
w: Giorno della settimana senza gli zeri, da 0 a 6 (in inglese partendo dalla domenica!).
z: Giorno dell'anno senza gli zeri, da 0 a 365.
Month:
m: numero del mese con gli zeri, da 01 a 12.
n: numero del mese senza gli zeri, da 1 a 12.
M: nome del mese abbreviato, da Jan a Dec.
F: nome del mese completo, da January a December.
t: numero del giorno del mese, da 28 a 31.
Year:
L: restituisce 1 se è un anno bistile e 0 se non lo è.
Y: anno espresso con quattro cifre.
y: anno espresso con due cifre da 00 a 99.
Altre formattazioni:
U: il numero di secondi trascorso dalla Unix Epoch (January 1, 1970)
0: la differenza dal Greenwich Meridian Time (GMT), es. 0100 = 1 ora, -0600 = -6 ore.
Concludiamo la segnalazione della funzione Php mktime:
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
che retituisce lo Unix timestamp corrispondente agli argomenti dati.
Gli argomenti vanno impostati nell'ordine indicato, quelli omessi verranno automaticamente impostati secondo i valori correnti dalla data e ora locale (quindi del server).
Creiamo ad esempio il timestamp di domani:
$domani = mktime(0, 0, 0, date("m"), date("d")+1, date("y"));
echo "domani sarà il ".date("d/m/y", $domani);