• Contatto
  • Note Legali
  • Privacy
  • FAQs
  • Downloads
  • Collabora
  • Supporta
  • Date e orari con Php

    Scritto da Erriko in Php il 11 maggio 2009

    La restituzione della data e dell’ora può sembrare una funzione banale, eppure saper gestire questo aspetto in php è davvero utilissimo nei casi più disparati.

    Nella manipolazione delle date in php è fondamentale il concetto di timestamp: ovvero il numero dei secondi trascorsi dal 1 gennaio 1970.

    Una “piccola” (si fa per dire) curiosità:  allo stato attuale il timestamp è concepito come un numero a 10 cifre. Questa lunghezza risulta essere sufficiente a contare i secondi trascorsi tra l’1/1/1970 ed il il 19/1/2038.
    Per questo motivo si prevede una sorta di Millennium bug, quando nel 2038 le macchine che utilizzano il timestamp “classico” termineranno il suddetto intervallo e torneranno al 1970 :shock: . Questa è una delle ragioni per le quali si sta via via passando a sistemi con architetture 64 bit che permettono una lunghezza superiore e quindi rinviano il problema. Per ulteriori informazioni a riguardo potete leggere questa pagina di wikipedia, oppure potremo decidere di riparlarne insieme in un articolo ad-hoc, basta chiedere ;-) !

    Ma torniamo a noi:

    Visualizzare il timestamp

    Visualizzare la data (o meglio il timestamp) è semplicissimo: basta inserire nel codice php le seguenti righe:

    <?php
     time();
    ?>
    

    In questo modo verrà visualizzato, come accennato prima, un numero composto a 10 cifre e, almeno ai comuni mortali, del tutto incomprensibile.

    Visualizzare la data in maniera corretta

    Utilizzando invece il codice

    <?php
    echo date ("d-m-Y H:i:s");
    ?>
    

    sarà possibile stampare a schermo il formato, molto più usabile, giorno-mese-anno ore:minuti:secondi.

    Il risultato sarà, ad esempio: 07-09-2010 13:00:28

    E’ possibile inoltre scegliere il formato dei singoli componenti che costituiscono data e ora sostituendo all’interno della funzione date() le lettere mensionate nell’esempio con altre, facendo riferimento alla guida ufficiale della funzione date presente in questa pagina.

    Modificando il codice precedente in seguendo i caratteri indicati nella guida ufficiale si può ottenere, ad esempio: Tuesday September 2010 1:00 pm

    Per ottenere risultati più complessi possiamo combinare la funzione mktime() e la funzione date().

    date() visualizza la data di oggi, mktime() estrapola il timestamp del valore ricavato e consente di effettuare calcoli, riconvertendo poi il timestamp in formato leggibile con date().

    Ecco alcuni esempi:

    <?php
    // ieri
    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")));
    // tra centoventi giorni
    echo date ("d-m-Y", mktime(0,0,0,date("m"),date("d")+120,date("Y")));
    // tra 6 ore
    echo date ("d-m-Y H:i:s", mktime(date("H")+6,date("i, s, m, d, Y")));
    // fra un anno
    echo date ("d-m-Y H:i:s", mktime(date("H"),date("Y")+1));
    ?>
    

    Possiamo inoltre utilizzare checkdate(), per verificare se una determinata data esiste, ed in questo caso il codice sarà:

    <?php
    // controlliamo se esiste il 32/9/08
    // il risultato sarà bool(false)
    var_dump(checkdate(9,32,2008));
    ?>
    

    Ottenere la data in italiano

    Si noti che in tutti i casi trattati fin ora la visualizzazione della data avviene in lingua inglese. Per ovviare a questo inconveniente è possibile risolvere nei seguenti modi:

    Se il codice è eseguito da un server Linux:

    <?php
    setlocale(LC_TIME, 'it_IT');
    echo strftime("%A %d %B %Y");
    ?>
    

    Se il codice è eseguito da un server Windows:

    <?php
    setlocale(LC_TIME, 'ita');
     echo strftime("%A %d %B %Y");
    ?>
    

    Un ulteriore modo più “grezzo” potrebbe essere quello di creare appositi array in modo da tradurre semplicemente i nomi dall’inglese all’italiano, come in questo esempio:

    <?php
    // carico tutti i nomi dei mesi nell'array $mese
    $mese = array ("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
    
    // carico tutti i giorni della settimana nell'array $giorno
    $giorno = array ("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì","Sabato");
    
    // qui stampo il giorno della settimana
    // date("w") restituisce un valore da 0 a 6 dove 0 è domenica, 1 lunedì e cosi' via fino a sabato
    echo "Il giorno della settimana è: {$giorno[date("w")]}";
    
    // qui stampo il nome del mese
    // date("n") restituisce un valore da 1 a 12
    // qui ho dovuto togliere 1 a ("n") per stampare il mese corretto
    // dal momento che l'indice dell'array parte da 0 e non da 1
    echo "Siamo nel mese di: {$mese[(date("n")-1)]}";
    echo "
    
    ";
    
    // qui stampo la data in italiano
    echo    "Oggi è ".$giorno[date("w")]." ".date("d")." ".$mese[(date("n")-1)]." ".date("Y");
    echo "
    
    ";
    
    // questo è uguale alla riga sopra, solo che l'ho disposta su più righe con commenti per spiegartela
    echo    "Oggi è ".
    	$giorno[date("w")]." ".       // giorno della settimana -> Martedì
    	date("d")." ".                        // numero del giorno -> 02
    	$mese[(date("n")-1)]." ".  // mese dell'anno -> Dicembre
    	date("Y");                            // anno 4 cifre -> 2009
    ?>
    

    Articoli Correlati

    Monitorare un link con php
    La variabile globale php $ SERVER
    Mostrare una lista degli articoli in arrivo con WordPress
    Esportare una tabella da un database MySql in CSV utilizzando PHP

    Non ci sono ancora commenti... Perchè non essere il primo?!?

    Commenta