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