Oggetto Date in JavaScript

L'oggetto Date in JavaScript mi consente di gestire date e ore.

Grazie ai metodi e alle proprietà dell'oggetto Date, posso eseguire diverse operazioni, come estrarre la data e l'ora correnti, salvare date e ore personalizzate, effettuare calcoli e convertire le date in stringhe.

Creazione di un oggetto Date

Ci sono diversi modi per creare un oggetto "Date":

Ad esempio, posso dichiarare un nuovo oggetto tramite la funzione Date() senza inizializzarne il valore:

var myDate = new Date();

Una volta definito l'oggetto, gli assegno un valore usando i metodi setFullYear(), setMonth() e setDate().

myDate.setFullYear(2020); // Imposta l'anno a 2020
myDate.setMonth(0); // Imposta il mese a Gennaio (0 indica Gennaio)
myDate.setDate(31); // Imposta il giorno a 31

Nota. La numerazione dei mesi nell'oggetto Date comincia da zero. Pertanto, "0" corrisponde a gennaio, "1" a febbraio e via dicendo fino a "11" che rappresenta dicembra.

In alternativa, posso inizializzare l'oggetto Date assegnandogli un valore espresso in millisecondi:

var myDate = new Date(1678492135312);

Il valore tra parentesi rappresenta il numero di millisecondi dal 1 gennaio 1970 alle 00:00 GMT.

In questo caso, il valore 1678492135312 corrisponde al 23 marzo 2023.

var myDate = new Date(1678492135312);
document.write(myDate.toDateString());

Lo script restituisce in output

Sat Mar 11 2023

Una strada decisamente più semplice consiste nell'assegnare un valore indicando la data come stringa.

var myDate = new Date("31 January 2020");

oppure

var myDate = new Date("31 Jan 2020");

E' anche possibile assegnare la data in formato "mm gg aaaa". Tuttavia, non tutti i browser adottano questo formato.

var myDate = new Date("01 31 2020");

Un'altra strada per effettuare l'assegnazione consiste nel suddividere la data in una sequenza di parametri separati da virgole: anno, mese, giorno, ore, minuti, secondi e millisecondi:

var myDate = new Date(2020,0,31,15,35,20,20);

In questo caso, è però importante ricordarsi che la numerazione dei mesi inizia da zero anziché da uno.

Non occorre specificare tutti i parametri della data e dell'orario, è sufficiente fornire solo i valori necessari.

Ad esempio, per assegnare la data "31 Gennaio 2020" mi basta scrivere

var myDate5 = new Date(2020,0,31);

In questo caso, tutti gli altri parametri assumono il valore di default "0". Quindi, l'orario è automaticamente assegnato alla mezzanotte "00:00".

Nota. La numerazione dei mesi a partire da zero è poco naturale e in fase di analisi del codice è facile confondersi. Pertanto, per evitare confusione, nelle assegnazioni dei valori agli oggetti Date preferisco indicare il nome del mese per espresso. Laddove è possibile farlo.

Modificare ed estrarre le date

Per estrarre le informazioni da un oggetto Date, uso uno dei seguenti metodi "get"

  • getDate()
    restituisce il giorno del mese
  • getDay()
    restituisce il giorno della settimana come intero (domenica=0, lunedì=1, ecc.)
  • getMonth()
    restituisce il mese come intero (gennaio=0, febbraio=1, ecc.)
  • getFullYear()
    restituisce l'anno come numero a quattro cifre
  • toDateString()
    restituisce la data completa basata sul fuso orario locale come stringa leggibile (es. "Wed 31 Dec 2020")
  • getHours()
    restituisce l'ora
  • getMinutes()
    restituisce i minuti
  • getSeconds()
    restituisce i secondi
  • getMilliseconds()
    restituisce i millisecondi
  • toTimeString()
    restituisce una stringa contenente l'orario (ad esempio, "15:23:07 UTC").

Ad esempio, se voglio leggere il mese di un oggetto data scrivo:

m = myDateObject.getMonth();

Per modificare i valori di un oggetto Date, invece, utilizzo i metodi "set"

Ad esempio, per cambiare l'anno dell'oggetto a 2021 si scrive:

myDateObject.setFullYear(2009);

Se invece voglio cambiare la data e il mese al 27 marzo scrivo

myDateObject.setDate(27);
myDateObject.setMonth(2);

Vale la pena ricordare che la numerazione dei mesi comincia da zero, quindi il mese di marzo è il mese 2.

Come gestisce i valori non validi?

Se assegno un parametro temporale con un valore non valido, JavaScript calcola automaticamente il valore successivo.

Ad esempio, assegno il valore 10 alle ore e 67 ai minuti dell'orario.

var myDate = new Date();
myDate.setHours(10);
myDate.setMinutes(67);
document.write(myDate.toDateString());

In questo caso Javascript crea un oggetto impostando l'orario alle 11:07 ossia l'orario 67 minuti dopo le 10:00.

11:07:52 GMT+0200 (Ora legale dell’Europa centrale)

In pratica Javascript somma i valori in eccesso. Lo stesso criterio vale per i giorni e i mesi.

Questo criterio è molto utile perché mi permette di aggiungere o sottrarre dei valori ai giorni, ai mesi, alle, ore, ai minuti o ai secondi di una data o di un orario.

Ad esempio, realizzo questo script per assegnare una scadenza a 7 giorni a partire dalal data corrente.

var myVar = new Date();
var day = myVar.getDate();
document.write(myVar.toDateString());
myVar.setDate(day+ 7);
document.write(myVar.toDateString());

Lo script stampa prima la data corrente che, in questo caso, è il 3 maggio 2022

Wed May 03 2022

Poi aggiunge 7 giorni all'oggetto "myVar" e stampa la nuova data.

Wed May 10 2022

Dopo la modifica la nuova data è il 10 maggio 2022

I metodi UTC

Quando creo un oggetto Date, Javascript imposta la data e l'ora corrente locale.

In alternativa posso utilizzare metodi UCT (Universal Coordinated Time) anche conosciuto come GMT (Greenwich Mean Time) di Londra.

Cos'è l tempo universale coordinato (UTC)? Il Tempo Universale Coordinato (UTC) è il sistema di riferimento temporale utilizzato in tutto il mondo per regolare gli orologi e il tempo.Si basa su tempi atomici internazionali ed è valido in tutto il mondo. Le differenze di fuso orario sono generalmente espresse come "+/- un certo numero di ore/minuti da UTC. In pratica, quando si richiede una precisa sincronizzazione del tempo, viene scelto il sistema UTC come riferimento perché fornisce un punto di riferimento temporale comune a livello globale.

I metodi Set UTC

I metodi Set UTC

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Oggetto Date in Javascript

I metodi

I metodi UTC