4 Mar 2011 0 commenti
Le date sono un dato che possiede alcune specificità in virtù del diverso formato che queste possono assumere. Questo aspetto sottopone tale dato spesso a criticità.
Da un punto di vista prettamente di visualizzazione, ad esempio, si potrà o meno avere: indicazione dell'orario, dei secondi, del mese in formato numerico piuttosto che in formato letterale (che può essere a sua volta di diverse lingue), etc etc..
Occorre, perciò, chiarire un aspetto che per chi muove i primi passi nel mondo della programmazione risulta essere spesso fonte di confusione: 'Giovedì 22 settembre 2010 ore 20:32' questa è una stringa; sì, una stringa che "rappresenta" una data, ma pur sempre una stringa.
Le date affinchè possano essere manipolate, salvate, controllate occorre che queste posseggano un formato corretto. Del tutto diversa e distinta sarà poi la questione legata alla visualizzazione: in questo caso potremo formattarla come meglio ci aggrada indicando o meno l'orario e/o il giorno della settimana e/o il mese in formato letterale e quant'altro.
Quindi, per consentire che date possano essere interpretate come tali è indispensabile che siano formattate correttamente.
La questione dell'interpretazione delle date è connessa soprattutto ad aspetti legati al confronto fra di esse. Ad esempio: individuare le date precedenti o successive ad un determinato momento; individuare quelle comprese fra due momenti temporali; individuare un lasso di tempo (in giorni, mesi ore, etc. etc.) fra due date.
Chiarito tale aspetto occorre altresì dire che il "formato corretto" può essere diverso a seconda dell'ambito in cui queste date verranno coinvolte. In questa sede verrà solo marginalmente trattato l'argomento dell'inserimento di date all'interno di un database MySql il quale richiede specifici formati.
Questa lunga, e forse noiosa premessa, un giorno (vi assicuro, molto vicino) vi tornerà utile e, in quel momento, ne capirete il vero significato.
LA FUNZIONE TIME()
La funzione time() restituisce la data in formato unix timestamp: è un numero intero rappresentante i secondi intercorsi dal 1 gennaio 1970 al momento attuale. Questo dato è "illegibile" da parte degli utenti (è una cifra priva di significato) ma è utile ai fini del trattamento le date. Infatti qualora si voglia salvare una data questo formato ci consentirà di fare confronti fra date.
Quindi evitate di salvare stringhe del tipo "12 luglio 2010 ore 12:20" e salvate invece il timestamp relativo a quella data. A partire dal timestamp per ottenere una data "leggibile" si ricorrerà alla funzione date().
LA FUNZIONE DATE()
La funzione date() restituisce la data nel formato desiderato e, quindi, và impiegata, prevalentemente, ai fini di visualizzazione della data.
Essa accetta due parametri: il primo è una stringa; il secondo, opzionale, è il timestamp (di default vale il timestamp attuale, quindi restituisce la data attuale).
Per quel che concerne il primo parametro essa provvede a convertire alcune lettere che fanno parte della stringa nella relativa indicazione.
Codice |
Descrizione |
Y |
anno su 4 cifre |
y |
anno su 2 cifre |
n |
mese numerico (1-12) |
m |
mese numerico su 2 cifre (01-12) |
F |
mese testuale ('January' - 'December') |
M |
mese testuale su 3 lettere ('Jan' - 'Dec') |
d |
giorno del mese su due cifre (01-31) |
j |
giorno del mese (1-31) |
w |
giorno della settimana, numerico (0=dom, 6=sab) |
l |
giorno della settimana, testuale ('Sunday' - 'Saturday' ) |
D |
giorno della settimana su 3 lettere ('Sun' - 'Sat') |
H |
ora su due cifre (00-23) |
G |
ora (0-23) |
i |
minuti su due cifre (00-59) |
s |
secondi su due cifre (00-59) |
Facciamo un esempio:
<?php echo date('j/n/Y'); // stampa la data odierna $timestamp_salvato = 1082356993; echo date('j/n/Y', $timestamp_salvato); // stampa la data relativa a quel timestamp echo time(); // stampa il timestamp attuale ?>
Quindi, per salvare una data è preferibile impiegare il timestamp, mentre in fase di visualizzazione si adopera la funzione date().
Salvare le date in MySql è questione distinta che và gestita in altro modo dato che il database MySql dispone di campi appositamente dedicati ad ospitare date e prevede un particolare formato e specifiche funzioni.
LA FUNZIONE MKTIME()
La funzione mktime() serve per ottenere il timestamp di una data passata o futura. Essa richiede 6 parametri tutti numerici: ore; minuti; secondi; mese; giorno; anno.
Prestate attenzione all'ordine (molto particolare) con i quali sono stati elencati i parametri in quanto un erroneo inserimento di questi fornirà un dato inevitabilmente sbagliato.
<?php $ore = 16; $minuti = 48; $secondi = 25; $mese = 5; $giorno = 28; $anno = 2008; // questo sarà il timestamp del 28/5/2008 ore 16:48 e 25 secondi echo mktime($ore, $minuti, $secondi, $mese, $giorno, $anno); ?>
Olimpio Romanella
Sono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni.
Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter.