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!