Visita Orebla.it su Facebook Segui Orebla.it su Twitter Vedi i video su YouTube di Orebla.it Unisciti alle cerchie di Orebla.it
DOVE TI TROVI: \\ Home Page\php\Gestire Data e Ora con PHP, avanzato :: Guida al PHP

Imparare il PHP: Date e Orari

autore: Orebla
xx/xx/xx

Gestire Data e Ora con PHP:

Ora dopo aver letto la guida precedente in cui ho iniziato a parlare della gestione delle date e dell'ora con PHP, entriamo in una visione un po' più complessa di come poter elaborare le funzioni per ottenere risultati più specifici.

Come ho già parlato prima è possibile utilizzare la funzione date() combinate con altre funzione di php, ovviamente sempre relativi a questo campo, come mktime().

Prima di farvi vedere qualche esempio pratico vi devo illustrare il funzionamento di questa seconda funzione, a questo indirizzo trovate la documentazione ufficiale: http://www.php.net/manual/en/function.mktime.php, ovviamente in inglese!

Ecco la grammatica della funzione in questione:

int mktime ( int ora, int minuti, int secondi, int mese, int giorno, int anno [, int is_dst] )

Questa funzione darà come risultato un numero intero che rappresenterà il famoso TIMESTAMP di cui abbiamo parlato all'inizio. Tutti gli argomenti sono facoltativi, in quanto il php li metterà in automatico se non presenti. Se vi ricordate infatti per restituire il TIMESTAMP attuale abbiamo utilizzato la funzione mktime() senza inserire nessun argomento.

Come potete vedere ci sono sette argomenti, i primi sei sono intuibili. Per esempio nel primo argomento "ora" dobbiamo inserire l'ora, nel secondo "minuti" dovremo inserire i secondi.

L'unico argomento che ha bisogno di specifiche è il settimo e ultimo, cioè "is_dst". In cui va inserito un valore che varia da 1 a -1. Metteremo 1 se l'orario e nell'ora legale, 0 se non lo è oppure -1 se non lo sappiamo. Se mettiamo -1 il php proverà a calcolarlo da se, con risultati a volte inaspettati quindi è bene che mettiamo il valore corretto. Di default il valore settato è -1.

Alcune specificazioni:

"Anno" può avere sia 2 che 4 cifre, con valori compresi tra 0-69 e 2000-2069 oppure tra 70-99 e 1970-1999 (sui sistemi dove time_t è un intero segnato a 32bit, come sulla maggior parte dei PC di oggi, l'intervallo valido per year è tra 1902 e 2037).

L'ultimo giorno del mese dato può essere espresso come il giorno "0" del mese successivo, non come il giorno -1.

Ecco gli esempio pratici:

<?php
echo mktime(8, 30, 0, 4, 5, 1994);
?>
Come vedete ho impostato la funzione in modo che calcoli il TIMESTAMP del 5 aprile 1994 alle ora 8:30:00. Il risultato della funzione sarà: 765527400.

Come vedete è semplice l'utilizzo di questa funzione. Ora vediamo di utilizzare questa funzione per fare qualcosa di più complesso. Per esempio potremo calcolare il TIMESTAMP di 10 giorni dopo la data specificata dall'utente.

Ecco l'utente definirà la data, noi aggiungeremo i 10 giorni nel seguente modo:

<?php
// questi sono i dati specificati dall'utente
$anno = 2006;
$mese = 2;
$giorno = 5;
//Questa la funzione che calcola il TIMESTAMP dopo 10 giorni
//dalla data specificata

echo mktime(0,0,0,$mese,$giorno+10,$anno);
?>
Questa funzione darà come risultato: 1139958000.

Come vedete è bastato semplicemente aggiungere il segno di addizione "+" e di seguito il numero di giorni che volevamo aggiungere. Ho preferito specificare l'ora, i minuti ed i secondi per evitare che il php li calcolasse da solo, creando risultati diversi per ogni eventuale prova del codice sopra riportato!

Che ne dite di vedere il risultato di prima formattato come una normale data?? Cioè 15/02/2006.

Ci basta utilizzare la funzione sopra scritta all'interno della funzione date(), con la giusta sintassi per la formattazione, ecco di seguito come va scritta:

<?php
// questi sono i dati specificati dall'utente
$anno = 2006;
$mese = 2;
$giorno = 5;
//Questa la funzione che calcola la data dopo 10 giorni
//dalla data specificata
echo date("d/m/Y",mktime(0,0,0,$mese,$giorno+10,$anno));
?>
Il risultato è quello specificato prima, cioè 15/02/2006.

Ecco qui di seguito un esempio super incasinato, che poi è solo un'impressione dato che una volta che ci si prende la mano è tutto molto semplice. In questo codice creeremo una funzione che ci restituisce in automatico la data di ieri, di domani e del mese prossimo.

<?php
// ieri
echo date ("d-m-Y",mktime(0,0,0,date("m"),date("d")-1,date("Y")));
// domani
echo date ("d-m-Y",mktime(0,0,0,date("m"),date("d")+1,date("Y")));
// il mese prossimo
echo date ("d-m-Y",mktime(0,0,0,date("m")+1,date("d"),date("Y"))); 
?>
Come vedete sono state inserite funzioni dentro a delle altre funzioni. Non è difficile da spiegare e neanche da capire. Vi ricordate il primo esempio di modifica della data quando abbiamo calcolato il TIMESTAMP di 10 giorni dopo la data inserite dall'utente??

Bè questa volta invece che inserire tutte le volte la data lo facciamo fare al php in modo automatico, così da rendere lo script molto più veloce e sicuro. infatti le singole funzioni (tipo: date("m"), date("d") e date("Y")) restituiscono il mese il giorno e l'anno di adesso.

Nella prossima guida vi illustrerò come adattare il linguaggio ed evitare che quando si richiama il nome del giorno della settimana o il mese compaia un qualcosa del tipo: monday, saturday.... January....






Articoli utili:
Jailbreak iOS 10: tweaks compatibili

Recensione iPhone 6

IPhone 7 uscito, novita, prezzi