Per creare una data dobbiamo creare un'istanza della classe Date tramite la parola chiave new. Esistono 4 costruttori nella classe Date:
//costruttore senza parametri
var oggi = new Date(); //crea un oggetto con la data e l'ora corrente nella timezone locale al momento dell'esecuzione
console.log(oggi); //la data corrente
//costruttore con un parametro di tipo Unix Time Stamp, cioè il numero di millisecondi intercorsi
//tra il 1 gennaio 1970 e la data che si vuole creare
var compleanno = new Date(390607200000); //numero di millisecondi tra il 1 gennaio 1970 e il 19 maggio 1982
console.log(compleanno); //"Wed May 19 1982 00:00:00 GMT+0200 (Ora legale dell’Europa centrale)"
//costruttore con una stringa che rappresenta una data (sconsigliato)
var nuovoMillennio = new Date("2000-01-01");
console.log(nuovoMillennio); //"Sat Jan 01 2000 01:00:00 GMT+0100 (Ora standard dell’Europa centrale"
//costruttore con valori individuali per anno / mese /giorno
var america = new Date(1492, 9, 12);
console.log(america); //"Wed Oct 12 1492 00:00:00 GMT+0049 (Ora legale dell’Europa centrale)"
UTC()
Il metodo statico UTC() prende i parametri di anno / mese / giorno in ingresso e restituisce i millisecondi passati dal 1 gennaio 1970 ma riferiti alla data UTC (Universal Coordinated Time oppure GMT Greenwich Meridian Time).
var duemilaUTC = Date.UTC(2000, 0, 1, 0, 0, 0); //ore minuti e secondi sono a 0
console.log(duemilaUTC); //946684800000
var dataLocale = new Date(946684800000);
console.log(dataLocale); // "Sat Jan 01 2000 01:00:00 GMT+0100 (Ora standard dell’Europa centrale)"
//l'ora non è mezzanotte ma l'una perchè new Date() crea una data locale mentre Date.UTC() crea una data internazionale
parse()
Il metodo statico parse(string) trasforma in millisecondi dal 1 gennaio 1970 la stringa passata come parametro. Questa stringa deve avere un formato riconoscibile come data perciò è sconsigliato utilizzare questo metodo.
var pearlHarbor = new Date(1941, 11, 7);
console.log(pearlHarbor.getTime()); //-885780000000
var a= Date.parse("1941-12-7");
console.log(a); //-885780000000
var b = Date.parse("1941-12-7T12:30:00");
console.log(b); //NaN
var c = Date.parse("1941-12-7T12:30:00.000+09:00");
console.log(c); //NaN
var d = Date.parse("1941/12/7");
console.log(d); //-885780000000
var e = Date.parse("1941,12,7");
console.log(e); //-885780000000
var f = Date.parse("December 7th 1941");
console.log(f); //NaN
var g = Date.parse("7 Dicembre 1941");
console.log(g); //NaN
now()
Il metodo statico now() restituisce i millisecondi dal 1 gennaio 1970 al momento in cui la funzione chiamata.
var millisecondi = Date.now();
console.log(millisecondi); //numero di millisecondi dal 1 gennaio 1970 ad ora
getDate()
Il metodo getDate() serve per ottenere il giorno del mese (da 1 a 31) corrispondente alla data passata come parametro.
var oggi = new Date();
console.log(oggi.getDate()); //il giorno del mese corrente in numero
getDay()
Il metodo getDay() serve per ottenere il giorno della settimana (da 0 a 6 cominciando da domenica) corrispondente alla data passata come parametro.
var bastiglia = new Date("1789-06-14");
console.log(bastiglia.getDay()); //0 cioè domenica
//per trovare il nome del giorno non abbiamo un metodo predefinito
var giorni = ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"];
var indice = bastiglia.getDay();
var giornoBastiglia = giorni[indice];
console.log(giornoBastiglia); //"Domenica"
getFullYear()
Il metodo getFullYear() serve per ottenere l'anno corrispondente alla data passata come parametro.
var rivoluzione = new Date(1789, 4, 5);
console.log(rivoluzione.getFullYear()); //1789
getHours()
Il metodo getHours() serve per ottenere l'ora (da 0 a 23) corrispondente alla data passata come parametro.
var normandia = new Date(1944, 5, 6, 12, 30, 0, 0);
console.log(normandia.getHours());//12
getMilliseconds()
Il metodo getMilliseconds() serve per ottenere i millisecondi (da 0 a 999) dell'orario corrispondente alla data passata come parametro.
var indipendenza = new Date(1776, 6, 4, 12, 30, 20, 10);
console.log(indipendenza.getMilliseconds()); //10
getMinutes()
Il metodo getMinutes() serve per ottenere i minuti (da 0 a 59) dell'orario corrispondente alla data passata come parametro.
var ww2 = new Date(1940, 5, 10, 16, 45, 30, 15);
console.log(ww2.getMinutes()); //45
getMonth()
Il metodo getMonth() serve per ottenere il mese (da 0 a 11) corrispondente alla data passata come parametro.
var vietnam = new Date("1955-11-1");
console.log(vietnam.getMonth()); //10
getSeconds()
Il metodo getSeconds() serve per ottenere i secondi (da 0 a 59) dell'orario corrispondente alla data passata come parametro.
var millennio4 = new Date(2999, 11, 31, 23, 59, 59, 999);
console.log(millennio4.getSeconds()); //59
getTime()
Il metodo getTime() serve per ottenere i millisecondi trascorsi dalla mezzanotte del 1 gennaio 1970 alla data passata come parametro.
var adesso = new Date();
console.log(adesso.getTime()); //numero di millisecondi dal 1 gennaio 1970 alla data corrente
getTimezoneOffset()
Il metodo getTimezoneOffset() serve per ottenere la differenza in minuti tra l'ora del computer che sta eseguendo il programma e l'ora del Meridiano di Greenwich. Non è sempre uguale perchè dipende se siamo nel periodo di ora solare o legale.
var primavera = new Date(2020, 2, 20);
console.log(primavera.getTimezoneOffset()); //-60
var autunno = new Date(2020, 8, 22);
console.log(autunno.getTimezoneOffset()); //-120
Quando invece vogliamo ottenere informazioni non sull'ora locale ma sull'ora internazionale uguale per tutti indipendentemente dal fuso orario (detta UTC Universal Coordinated Time oppure GMT Greenwich Meridian Time) abbiamo dei metodi analoghi ai precedenti:
getUTCDate(), getUTCDay(), getUTCFullYear(), getUTCHours(), getUTCMilliseconds(), getUTCMinutes(), getUTCMonth(), getUTCSeconds
Quando invece che leggere le informazioni su una data vogliamo modificarla abbiamo dei metodi analoghi ai precedenti (manca setDay() perchè il giorno della settimana è conseguenza della data):
setDate(), setFullYear(), setHours(), setMilliseconds(), setMinutes(), setMonth(), setSeconds(), setTime()
La stessa cosa per le date UTC:
setUTCDate(), setUTCFullYear(), setUTCHours(), setUTCMilliseconds(), setUTCMinutes(), setUTCMonth(), setUTCSeconds()
toDateString()
Il metodo toDateString() serve per convertire una data (l'ora viene ignorata) in una stringa in questo formato (in inglese):
le prime 3 lettere del giorno + le prime 3 lettere del mese + il numero del giorno + l'anno
var natale= new Date(2020, 11, 25, 23, 59);
console.log(natale.toDateString()); //"Fri Dec 25 2020"
toISOString()
Il metodo toISOString() serve per convertire una data (compresa l'ora) in una stringa nel formato ISO 8601 ovvero:
YYYY-MM-DDTHH:mm:ss.sssZ
La Z finale indica che la data convertita diventa quella internazionale
var capodanno = new Date(2021, 0, 1, 0, 0, 0);
console.log(capodanno); //"Fri Jan 01 2021 00:00:00 GMT+0100 (Ora standard dell’Europa centrale)"
console.log(capodanno.toISOString()); //"2020-12-31T23:00:00.000Z"
toTimeString()
toUTCString()
toJSON()
Il metodo toJSON() serve per convertire una data (compresa l'ora) in una stringa nel formato ISO 8601 e successivamente in JSON
var taricone= new Date(2010, 5, 29, 9, 20, 30);
console.log(taricone.toJSON()); //"2010-06-29T07:20:30.000Z"
toLocaleString()
Il metodo toLocaleString() serve per convertire una data in stringa formattata in base al parametro della lingua passato alla funzione, eventualmente si può passare anche un secondo parametro di opzioni
var mJ = new Date(2009, 5, 25, 17, 10, 30);
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }
console.log(mJ.toLocaleString("fr-FR")); //"25/06/2009 à 17:10:30"
console.log(mJ.toLocaleString("de-DE", options)); //"Donnerstag, 25. Juni 2009"
console.log(mJ.toLocaleString("ja-JP-u-ca-japanese", options)); //"平成21年6月25日木曜日" non tutte le nazioni usano il nostro calendario!!!
//Trovare il nome del mese corrente:
var oggi = new Date();
console.log(oggi.toLocaleString('default', {month: 'long'})); //stampa il nome del mese corrente
toLocaleDateString()
Il metodo toLocaleDateString() serve per convertire una data (l'ora viene ignorata) in una stringa formattata in base al parametro della lingua passato alla funzione, eventualmente si può passare anche un secondo parametro di opzioni
var winehouse = new Date("2011-07-23 15:45:40");
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }
console.log(winehouse.toLocaleDateString('it-IT', options)); //"sabato 23 luglio 2011"
console.log(winehouse.toLocaleDateString('ar-EG')); //"٢٣/٧/٢٠١١"
console.log(winehouse.toLocaleDateString('en-AU')); //"23/07/2011"
toLocaleTimeString()
Il metodo toLocaleTimeString() serve per convertire la parte rappresentante l'ora di una data in una stringa formattata in base al parametro della lingua passato alla funzione
var bongiorno = new Date(2009, 8, 8, 13, 15, 0);
console.log(bongiorno.toLocaleTimeString('ko-KR')); //오후 1:15:00
console.log(bongiorno.toLocaleTimeString('ru-RU')); //13:15:00