Date/Time reference
§ 1. JavaScript Dates
L'oggetto fondamentale messo a disposizione da Java Script per lavorare con il tempo è l'oggetto Date
Una data js può essere scritta come:
- una stringa: Monday Jul 03 2017 09:01:49 GMT +0200 (Ora legale dell'Europa Occidentale)
- un numero: 1499065309911. Rappresenta il numero di millisecondi dall'inizio dell'Epeca: 01/01/1970, 00:00:00
L'oggetto Date dispone di quattro costruttori:
- Date() -
- Date(milliseconds)
- Date(dateString)
- Date(year, month, day, hours, minutes, seconds, milliseconds)
Dal momento che le date sono spesso utilizzate in campi di input con type=date, è importante vedere il tipo di formato accettato da questo tipo di campo.
I campi di imput di type=date accettano il formato ISO Date. Esempio: "2017-07-03"
Il seguente frammento di codice è utilizzato per inizializzare il campo "Data iniziale" della form che segue:
var dataIniziale = document.getElementById('d1')
var dIni=new Date();
dataIniziale.value=dIni.toISOString().substring(0,10);
In maniera reciproca, ecco come dal campo "Data Finale" si passa all'oggetto Date dFin:
var dataFinale=document.getElementById('d2');
var dFin=new Date(dataFinale.value);
Per calcolare il numero di giorni fra le due date la procedura è la seguente:
- conversione, in millisecondi dall'inizio dell'Epoca, delle due date, con il metodo getTime() :
- calcolo dell'intervallo di tempo , in millisecondi, fra le due date;
- divisione dell'intervallo di tempo fra ledue date ed il numero di millisecondi in un giorno;
- arrotondamento all'unità del numero così ottenuto;
Il codice utilizzato nella form di esempio è il seguente:
function calcolaGiorni(){
var ti=new Date(dataIniziale.value).getTime();
var tf=new Date(dataFinale.value).getTime();
var deltat=tf-ti;
var millisecondiGiorno=24*60*60*1000;
var ng=Math.round(deltat/millisecondiGiorno);
nroGiorni.value=ng.toFixed(0);
return;
}
Per calcolare "Data Finale" a partire da "Data Iniziale" dopo aver inserito "Giorni" la procedura è la seguente:
- conversione, in millisecondi dall'inizio dell'Epoca, della "Data Iniziale", con il metodo getTime() :
- calcolo dei millisecondi in "Giorni";
- somma dei millisecondi in "Giorni" ai millisecondi in "Data Iniziale" ;
- creazione di un oggetto data con new Date(millisecondiDataFinale);
Il codice utilizzato nella form di esempio è il seguente:
function calcolaNuovaData(){
var ti = new Date(dataIniziale.value).getTime();
var millisecondiInGiorni=nroGiorni.value*24*60*60*1000;
var tf=ti+millisecondiInGiorni;
dataFinale.value=new Date(tf).toISOString().substring(0,10);
return;
}
Ecco il codice JavaScript della pagina: prova_DateAndTime.js