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 |
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: