TIMESTAMP
In questo breve articolo cercherò di spiegare cos'è il timestamp UNIX e quali sono i suoi vantaggi nelle operazioni con le date.
Iniziamo dicendo che il timestamp è un numero rappresentante i secondi trascorsi dalle 00.00.00 del 1 Gennaio 1970 fino ad un certa data.
Supponiamo che oggi sia il 16 luglio 2005, ore 12:42:22
Il timestamp in questo istante è 1121510542.
Questo significa che sono passati 1121510542 secondi dalla mezzanotte del 1 gennaio 1970.
Vediamo ora come utilizzare il timestamp nei nostro script php.
Funzioni:
int time ( void )
Questa semplice funzione restituisce il timestamp attuale.
string date ( string formato [, int timestamp] )
Restituisce una data formattata in base al 1° parametro relativa al timestamp passato
come secondo argomento. Se questo viene omesso, si considera il timestamp attuale.
La formattazione può avvenire in base ai seguenti valori:
Y -> anno su 4 cifre
y -> anno su 2 cifre
n -> mese numerico ( 1 - 12 )
m -> mese numerici ( 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 settimanda (0=Dom, 6=Sab);
l -> giorno della settimane 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 );
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst] )
Passando come parametro l'ora, i minuti, i secondi, il mese, il giorno e l'anno di una certa data ne restituisce il
timestamp. L'ultimo parametro può essere impostato a 1 se si tratta di ora legale, 0 altrimenti, o -1 (di default)
se è sconosciuta la presenza dell'ora legale o meno.
Vediamo ora come possiamo usare queste tre funzioni:
ESEMPIO:
abbiamo 3 variabili, $giorno $mese e $anno rappresentati una certa data, e vogliamo sapere quanto tempo è passato da quella
data a oggi. Prima di tutto ci calcoliamo con la funzione mktime il timestamp di quella data, dopo di che lo sottraiamo al
timestamp attuale, e dal risultato ricaviamo anni mesi e giorni passati. Ecco il codice:
<?
/* calcoliamo quant'è passato dalla mia nascita */
$anno = 1988;
$mese = 6;
$giorno = 9;
$vecchio_timestamp = mktime(0,0,0,$mese,$giorno,$anno);
$timestamp_attuale = time();
$diff = $timestamp_attuale - $vecchio_timestamp;
$anni_passati = date("Y",$diff) - 1970;
$mesi_passati = date("n", $diff) - 1;
$giorni_passati = date("j", $diff) - 1;
echo "dal $giorno/$mese/$anno sono passati $anni_passati anni, $mesi_passati mesi e $giorni_passati giorni";
?>
ci sono due righe da commentare. la prima è:
$anni_passati = date("Y",$diff) - 1970;
Perchè abbiamo sottratto 1970 ?
semplice, perchè una volta ottenuto il timestamp differenza, questo rappresenterà i secondi che sono passati dalla data
specificata a oggi, ma quando usiamo la funzione date(), essa sa che quei secondi sono passati dal 1970, di conseguenza
conterà a partire da 1970. Nel caso precedente avremmo avuto come risultato 1987, invece sottraendo 1970 abbiamo 17, che sono
i miei anni.
Seconda riga da commentare:
$mesi_passati = date("n", $diff) - 1;
una volta ottenuti i mesi, perchè sottraiamo uno?
Beh, basta pensare a come viene comunemente scritta una data: ad esempio oggi è: 16 / 7 / 2005
Ciò significa che siamo nel 7° mese del 2005, ma questo mese nn è ancora trascorso interamente, in quanto sono trascorsi solo
6 mesi e 16 giorni. Quindi per ottenere i mesi effettivamente passati dobbiamo sottrarre uno. Lo stesso discorso vale per i
giorni. Se avessimo voluto inserire in questo esempio anche ore, minuti e secondi avremmo dovuto farlo anche per loro.
Questa prima guida relativa al timestamp termina qui, conto di scrivere ancora qualcos'altro data la vastità dell'argomento.
Per qualsiasi dubbio, scrivetemi a m.cotrufo@email.it
Aggiungi un commento