Javascript: gestione delle date

Programmazione - Javascript Visite: 5195

Emmegi Arts news

Javascript e la gestione delle date

Vediamo dei semplici esempio che mostrano come si possono gestire le date direttamente con codice javascript.

 

AGGIORNAMENTI

Ottobre 2013: pubblicazione articolo

 

 

 

Gestione delle date in Javascript

Vediamo come calcolare e gestire la data corrente in javascript:

 

<script type="text/javascript" language="JavaScript"> 

    //Estrazione della data corrente
    var today = new Date();

   

    //Estrazione dell'anno corrente
    var anno = today.getFullYear(); //la funzione getYear() è deprecata

 

    //Estrazione del mese corrente, Gennaio=0 per questo sommo +1
    var mese = today.getMonth()+1;

 

    //Giorno corrente come numero 1-31
    var giorno = today.getDate();

 

    //Ora corrente

    var h = today.getHours();

 

   //Minuti correnti

   var m = today.getMinutes();

 

   //Secondi correnti

   var s = ut.getSeconds();

 

    //Un esempio su come riformattare la data

    var data = giorno + "/" + mese + "/" + anno;
</script>

 

 Se vogliamo visualizzare la data dinamica in una pagina web si può fare così:

 

               <form name="rclock" action="">
                <input name="rtime" />
                </form>

               <script type="text/javascript" language="JavaScript">                
                    var tick;
                    function nowtime() {
                        var ut = new Date();
                        var g, mese, a, h, m, s;
                        var time = " ";
                        a = ut.getFullYear(); //la funzione getYear è deprecata
                        mese = ut.getMonth() + 1;
                        g = ut.getDate();
                        h = ut.getHours();
                        m = ut.getMinutes();
                        s = ut.getSeconds();

                        if (s <= 9) s = "0" + s;
                        if (m <= 9) m = "0" + m;
                        if (h <= 9) h = "0" + h;
                        time = g + "/" + mese + "/" + a + " " + h + ":" + m + ":" + s + "  ";
                        document.rclock.rtime.value = time;
                        tick = setTimeout("nowtime()", 1000);
                    }
                    nowtime();                    
                </script>

 

Vediamo ora qualche semplice operazione che è possibile fare con una data.

Sommare ad una data un certo numero di mesi:

 

//Data iniziale

var dataIniziale = new Date();

dataIniziale.setMonth(dataIniziale.getMonth() + 5);

 

In questa maniera si sommano 5 mesi alla data iniziale. Bisogna ricordarsi che il primo mese della data è 0 (zero) e non 1.

Come verificare se una data è valorizzata correttamente?

 

if ( !isNaN(dataInizio.getTime()) )

{

   //data valorizzata correttamente

}

 

Vediamo ora infine una semplice funzione che opera sulle date. Da una data di partenza si calcola una data di arrivo:

 

<script type="text/javascript" language="javascript">
<!--
    function aggiornaData()
    {
        var g, mese, a;
       
        //Leggo da un parametro se si deve o no ricalcolare la data
        var devoRicalcolareLaData = document.getElementById("devoRicalcolareLaData").value;
        //Leggo l'unità di misura: G=giorni, A=anni, M=mesi
        var unitaMisura = document.getElementById("unitaMisura").value;
        //Leggo di quanto si deve aumentare la data
        var validita = parseInt(document.getElementById("valore").value);
        //Data da aggiornare
        var dataAggiornata = document.getElementById("dataAggiornata").value;
         
        var dataPartenza = document.getElementById("dataPartenza").value;
        var di_g   = parseInt(dataInizioStr.substring(0,2));
        var di_m  = parseInt(dataInizioStr.substring(3,5));
        var di_a   = parseInt(dataInizioStr.substring(6,10));
        var dataPartenza = new Date(di_a, di_m-1, di_g);

        if(unitaMisura == "A")
        {
            dataPartenza = new Date(di_a+validita, di_m-1, di_g-1);                
        }
        else if(unitaMisura == "M")
        {
            dataPartenza = new Date(di_a, di_m-1+validita, di_g);                
        }
        else
        {
            dataPartenza = new Date(di_a, di_m-1, di_g+validita);
        }
       
        a = dataPartenza.getFullYear(); //la funzione getYear è deprecata
        mese = dataPartenza.getMonth() + 1;
        g = dataPartenza.getDate();

        if (g <= 9) g = "0" + g;
        if (mese <= 9) mese = "0" + mese;
       
        var dataFine = g + "/" + mese + "/" + a;        
        if ( !isNaN(dataPartenza.getTime()) && dataAggiornata == "" )
        {
            //Data di fine non inserita prima
            document.getElementById("dataAggiornata").value = dataFine;
            document.getElementById('msg1').style.display = "block";
            document.getElementById('msg2').style.display = "none";
        }
        else if ( !isNaN(dataPartenza.getTime()))
        {
            //Data di fine sovrascritta
            document.getElementById("dataAggiornata").value = dataFine;
            document.getElementById('msg1').style.display = "none";
            document.getElementById('msg2').style.display = "block";
        }        
    }    
// -->
</script>

 

Buon lavoro!