Imparare il PHP: Date e Orari
autore: Orebla
xx/xx/xx
Gestire Data e Ora con PHP:
Come già detto in precedenza il PHP è uno strumento molto
potente che ci permette di creare una moltitudine di funzioni e gestirle in modo
semplice ed intuitivo.
In questa guida parleremo di come poter gestire le date e orari
con il PHP. Ovviamente prima faremo la nostra solita precisazione del tema che
tratteremo.
Si perchè quando si parla di data e ora bisogna precisare che
questi due "dati" sono soggettivi. Cosa voglio dire con questa frase.
Il PHP non ha un orologio unico che coordina l'ora e data in modo generale così
da non aver differenze di orario.
L'orario e la data variano da server a server, stessa cosa se
prendiamo 3 persone e gli chiediamo l'ora precisa con minuti e secondi. Tutti e
tre avranno l'ora diversa in quanto non sono sincronizzati tra loro.
Ho voluto specificare questo particolare perchè il mio server
(sul quale è ospitato questo sito) non è italiano ed ho avuto una brutta
sorpresa quando ho dovuto creare uno script in cui era presente l'ora e la data.
Niente di irrimediabile però è giusto saperlo in partenza!
Addirittura l'orario e la datazione cambiano da Sistema
Operativo a Sistema Operativo, in questo caso la variazione sarà una
sottigliezza però esiste.
Questo perchè la data viene generata tramite un calcolo con il
numero di secondi trascorsi dal 1 gennaio 1970, stiamo parlando in questo caso
di TIMESTAMP (ovvero la famosa UNIX EPOCH), ai giorni nostri.
I valori massimi e minimi memorizzabili sono rappresentati da un
numero intero a 32 bit con segno, quindi arriveremo a
13 dicembre 1901
20:45:54 al
19 gennaio 2038 03:14:07. Invece nei sistemi Windows non
avremo la specificazione dell'ora in quanto non sono presenti i numeri
negativi... Questione di particolari.
Finita la solita precisazione partiamo con la spiegazione del
codice necessario per mostrare la data e l'orario.
Partiamo con il mostrare il famoso TIMESTAMP:
<?php
echo mktime();
?>
Questo ci mostrerà il seguente risultato: 1146075063, che tradotto in
data ed ora significano: 26-04-2006 20:11:03.
La funzione time() è molto utile quando dovete memorizzare molte date, per
esempio il famoso script per la creazione di forum phpBB utilizza la memorizzazione
del TIMESTAMP su database per avere maggiore libertà e leggerezza.
Bene adesso vi illustrerò la funzione principale che utilizzeremo sempre per
visualizzare l'orario e la data. La funzione si chiama date() e potete
trovare tutta la documentazione ufficiale a questo indirizzo: http://www.php.net/manual/en/function.date.php,
purtroppo la documentazione aggiornata è sempre in inglese. Esiste anche in
italiano ma non è super aggiornata, eccola: http://www.php.net/manual/it/function.date.php.
Ecco la grammatica della funzione:
string date ( string formato [, int timestamp] )
Come di norma questa funzione restituisce una stringa ed accetta due
argomenti, il primo è rappresentato da "formato", cioè il formato in
cui vogliamo sia visualizzata la data (subito dopo vi mostrerò i diversi tipi)
questo è un oggetto obbligatorio.
Invece il secondo argomento è facoltativo ed è rappresentato da un numero
intero, che è quello di cui parlavamo prima.
Di seguito tutti i formati disponibili per mostrare la data:
Data: |
Formato |
Risultato |
d |
giorno del mese, 2 cifre senza tralasciare gli zero;
i.e. "01" a "31" |
D |
giorno della settimana, testuale, 3 lettere; i.e.
"Fri" |
F |
mese, testuale, long; i.e. "January" |
j |
giorno del mese senza eventuali zero; i.e.
"1" a "31" |
l ("L" minuscola) |
giorno della settimana, testuale, long; i.e. "Friday" |
m |
mese; i.e. "01" a "12" |
M |
mese, testuale, 3 lettere; i.e. "Jan" |
n |
mese senza eventuali zero; i.e. "1" a
"12" |
w |
giorno della settimana, numerico, i.e. "0"
(Domenica) a "6" (Sabato) |
Y |
anno, 4 cifre; i.e. "1999" |
y |
anno, 2 cifre; i.e. "99" |
z |
giorno dell'anno; i.e. "0" a
"365" |
Orario: |
Formato: |
Risultato: |
a |
mostra "am" o "pm" |
A |
mostra "AM" o "PM" |
g |
formato a 12-ore senza eventuali zero; i.e.
"1" a "12" |
G |
formato a 24-ore senza eventuali zero; i.e.
"0" a "23" |
h |
formato a 12-ore; i.e. "01" a "12" |
H |
formato a 24-ore; i.e. "00" a
"23" |
i |
minuti; i.e. "00" a "59" |
Ora
facciamo un esempio di utilizzo:
<?php
echo date ("d-m-Y H:i:s");
?>
Questo
stamperà il seguente risultato:
27-04-2006 14:12:16.
Come
vedete si possono aggiungere anche caratteri all'interno della funzione date().
Infatti se notate ho inserito il trattino "-" per dividere giorno,
mese e anno. Poi ho inserito i due punti ":" per dividere ore, minuti
e secondi.
Ora
vi faccio altri esempi per illustrarvi meglio l'utilizzo della funzione date():
<?php
echo date ("d.m.y");
?>
Questo
stamperà il seguente risultato:
27.04.06.
Altro
esempio:
<?php
echo date ("o\g\g\i: D F Y H:i:s");
?>
Questo
stamperà il seguente risultato:
oggi: Thu April 2006 14:36:48.
Come
vedete da questo ultimo esempio ho inserito una parola all'interno del oggetto
della funzione. Noterete che ho inserito prima di ogni lettere aggiuntiva della
parola uno slash "\". Li ho inserito per un semplice motivo, perchè
sono elementi della funzione, se controllate nella tabella che ho scritto prima
vedrete che la "g" e la "i" restituiscono rispettivamente
l'ora e i minuti. Se io non mettevo gli slash si creava non poca confusione.
Se
invece la parola che volete inserire non ha lettere che sono elementi della
funzione potete inserirli tranquillamente senza slash in qualsiasi punto del
primo argomeno.
Ecco
un esempio:
<?php
echo date ("ecco: D F Y H:i:s");
?>
Questo
stamperà il seguente risultato: ecco:
Thu April 2006 14:41:21.
Ovviamente
noterete nella documentazione ufficiale che la funzione date() può essere
utilizzata in combinazione con altre funzioni come mktime(). Questo però è
già un po' più avanzato e ve lo mostrerò nella prossima guida.