Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 26 di 112
  • livello avanzato
Indice lezioni

Date e orari con JavaScript

L'oggetto Date ci permette di lavorare con le date, confrontarle e compiere semplici operazioni
L'oggetto Date ci permette di lavorare con le date, confrontarle e compiere semplici operazioni
Link copiato negli appunti

Per la rappresentazione di date e orari JavaScript prevede l'oggetto Date. Esso codifica internamente una data come il numero di millisecondi trascorsi dal 1 Gennaio 1970, ora di Greenwich.

Il costruttore di Date

Possiamo utilizzare l'oggetto Date per la creazione di istanze di date in quattro modi differenti:

1. Non specifichiamo alcun parametro nel costruttore e otteniamo un oggetto Date con il valore della data e ora corrente.

var w = new Date();

2. Passiamo un valore numerico che rappresenta il numero di millisecondi dal 1 Gennaio 1970. È possibile specificare anche valori negativi, nel qual caso indica il numero di millisecondi antecedenti la data di riferimento.

var x = new Date(1379989986515);

3. Specifichiamo una stringa che rappresenta una data:

var y = new Date("01/01/2013 15:30");

4. Indichiamo come argomenti rispettivamente l'anno, il mese, il giorno, l'ora, i minuti, i secondi e i millisecondi:

var z = new Date(2013, 1, 1, 15, 30, 0, 0);

A parte l'anno ed il mese, gli altri argomenti di Date in quest'ultimo tipo di chiamata sono opzionali. Un'attenzione particolare bisogna prestarla all'argomento che indica il mese, dal momento che i corrispondenti valori numerici vanno da zero (gennaio) a 11 (dicembre).

Scomporre la data in giorno, mese, anno, etc.

L'oggetto Date prevede una serie di metodi che consentono di scomporre una data nei suoi componenti, come mostrato nella seguente tabella:

MEtodo Descrizione
getFullYear() Restituisce l'anno rappresentato con quattro cifre
getMonth() Restituisce il mese (da 0 a 11)
getDate() Restituisce il giorno del mese (da 1 a 31)
getDay() Restituisce il giorno della settimana (da 0 a 6)
getHours() Restituisce l'ora
getMinutes() Restituisce i minuti
getSeconds() Restituisce i secondi
getMilliseconds() Restituisce i millisecondi

Vediamo un esempio d'uso del metodo getDay() per ricavare il giorno della settimana:

var oggi = new Date();
var giorno;
switch (oggi.getDay()) {
case 0:
giorno = "domenica";
break;
case 1:
giorno = "lunedì";
break;
case 2:
giorno = "martedì";
break;
case 3:
giorno = "mercoledì";
break;
case 4:
giorno = "giovedì";
break;
case 5:
giorno = "venerdì";
break;
case 6:
giorno = "sabato";
break;
}
console.log("Oggi è " + giorno);

Ecco lo stesso esempio in un versione compatta, che sfrutta un array simile a quello definito qualche lezione addietro:

var oggi = new Date(),
giorno = ["domenica", "lunedì", "martedì", "mercoledì","giovedì", "venerdì","sabato"];
console.log("Oggi è " + giorno[oggi.getDay()]);

e una ultracompatta, per arrovellarsi un po' il cervello:

var giorno = ["domenica", "lunedì", "martedì", "mercoledì",
"giovedì", "venerdì","sabato"][new Date().getDay()];
console.log("Oggi è " + giorno);

Modificare la data

È possibile modificare il valore di una data utilizzando i metodi elencati nella seguente tabella:

Metodo Descrizione
setFullYear() Imposta l'anno di una data
setMonth() Imposta il mese di una data
setDate() Imposta il giorno del mese di unadata
setHours() Imposta l'ora di una data
setMinutes() Imposta i minuti di una data
setSeconds() Imposta i secondi di una data
setMilliseconds() Imposta i millisecondi di una data
setTime() Imposta data e ora specificandolain millisecondi rispetto al 1 Gennaio 1970

Ad esempio, per impostare il giorno del prossimo anno corrispondente ad oggi possiamo scrivere:

var data = new Date();
data.setFullYear(data.getFullYear() + 1);
console.log(data);

Notiamo che la modifica di una data aggiungendo o sottraendo valori, ad esempio mesi, giorni o ore, comporta la gestione automatica degli altri componenti della data. Così, ad esempio, se si aggiungono 10 giorni al giorno di Natale si otterrà automaticamente la modifica del mese e dell'anno:

var data = new Date(2013, 11, 25);
data.setDate(data.getDate() + 10);
console.log(data); // Sat Jan 04 2014 ...

Confrontare le date

JavaScript prevede la possibilità di confrontare due date tramite i normali operatori di confronto, come mostrato nel seguente esempio:

var scadenza = new Date(2013, 11, 10);
var oggi = new Date();
if (oggi < scadenza) messaggio = "Non ancora scaduto!";
if (oggi > scadenza) messaggio = "Scaduto!";
console.log(messaggio);

Impostazioni locali

Normalmente le date sono indicate in base alle impostazioni locali della macchina su cui viene eseguito uno script. Quindi se stampiamo a video una data possiamo ottenere qualcosa di analogo a questo:

Tue Oct 22 2013 07:20:20 GMT+0200 (ora legale Europa occidentale)

Internamente però la rappresentazione delle date è relativa all'ora di Greenwich (Greenwich Mean Time o GMT) conosciuta anche come Universal Time Coordinate (UTC). JavaScript mette a disposizione alcuni metodi per poter lavorare con la rappresentazione UTC delle date. Ad esempio, il seguente codice ricava l'ora di Greenwich della data corrente:

var oggi = new Date();
console.log(oggi.getUTCHours());

In pratica, per ciascuno dei metodi per ottenere e per impostare i componenti di una data esiste il corrispondente metodo UTC: getUTCDate(), setUTCDate(), ecc.

In più abbiamo il metodo getTimezoneOffset() che restituisce la differenza in minuti tra l'ora UTC e l'ora locale:

var oggi = new Date()
var differenza = oggi.getTimezoneOffset();

La variabile differenza avrà valore negativo o positivo a seconda se l'ora locale è rispettivamente maggiore o minore dell'ora UTC.

Rappresentare la data come stringa

Infine, una serie di metodi consentono la rappresentazione di una data sotto forma di stringa:

Metodo Descrizione
toDateString() Converte la componente data in stringa, escludendo l'ora
toISOString() Converte una data in stringa in formato ISO
toLocaleDateString() Converte la componente data in stringa, escludendo l'ora, secondo le impostazioni locali
toLocaleTimeString() Converte la componente ora in stringa, escludendo la data, secondo le impostazioni locali
toLocaleString() Converte una data in stringa secondo le impostazioni locali
toString() Converte una data in stringa
toTimeString() Converte la componente ora in stringa, escludendo la data
toUTCString() Converte una data UTC in stringa

Ti consigliamo anche