OGGETTO DATE IN JAVASCRIPT
JavaScript Date Object ci consente di lavorare con le date:
const d = new Date();
//Thu Mar 03 2022 00:18:35 GMT+0100 (Ora standard dell’Europa centrale)
Per impostazione predefinita, JavaScript utilizzerà il fuso orario del browser e visualizzerà una data come stringa di testo completo.
CREARE OGGETTI DATE
Gli oggetti Date vengono creati con il costruttore new Date(). Esistono 4 modi per creare un new object date:
new Date()
new Date(year, month, day, hours, minutes, seconds, milliseconds)
new Date(milliseconds)
new Date(date string)
- new Date() crea un nuovo oggetto Date con la data e l’ora correnti:
const d = new Date();
Gli oggetti Date sono statici. Il tempo del computer scorre, gli oggetti Date no.
- new Date(year, month, …) crea un nuovo oggetto Date con una data e un’ora specificate.
7 numeri specificano anno, mese, giorno, ora, minuti, secondi e millisecondi (in quest’ordine):
const d = new Date(2021, 11, 24, 10, 33, 30, 0);
// Fri Dec 24 2021 10:33:30 GMT+0100 (Ora standard dell’Europa centrale)
Nota: JavaScript conta i mesi da 0 a 11: gennaio = 0, dicembre = 11.
Specificando un mese maggiore di 11, non si verificherà un errore ma si aggiungerà l’overflow all’anno successivo:
Ossia:
const d = new Date(2018, 15, 24, 10, 33, 30);
Equivale a:
//Wed Apr 24 2019 10:33:30 GMT+0200 (Ora legale dell’Europa centrale)
Specificando un giorno superiore a max, non si verificherà un errore ma si aggiungerà l’overflow al mese successivo:
Specificando:
const d = new Date(2018, 5, 35, 10, 33, 30);
si avrà:
// Thu Jul 05 2018 10:33:30 GMT+0200 (Ora legale dell’Europa centrale)
USARE 6,4,3 OPPURE 2 NUMERI
-
- 6 numeri specificano anno, mese, giorno, ora, minuti, secondi.
- 5 numeri specificano anno, mese, giorno, ora e minuti.
- 4 numeri specificano anno, mese, giorno e ora.
- 3 numeri specificano anno, mese e giorno.
- 2 numeri specificano anno e mese.
- Non puoi omettere il mese. Se fornisci un solo parametro, verrà trattato come millisecondi.
const d = new Date(2021);
// Thu Jan 01 1970 01:00:02 GMT+0100 (Ora standard dell’Europa centrale)
SECOLO PRECEDENTE
Gli anni a una e due cifre verranno interpretati come 19xx:
const d = new Date(99, 11, 24);
// Fri Dec 24 1999 00:00:00 GMT+0100 (Ora standard dell’Europa centrale)
const d = new Date(9, 11, 24);
// Fri Dec 24 1909 00:00:00 GMT+0100 (Ora standard dell’Europa centrale)
- new Date(dateString) crea un nuovo oggetto Date da una stringa:
const d = new Date(“October 15, 2021 11:13:00”);
// Fri Oct 15 2021 11:13:00 GMT+0200 (Ora legale dell’Europa centrale)
JAVASCRIPT MEMORIZZA LE DATE COME MILLISECONDI
JavaScript memorizza le date come numero di millisecondi dal 01 gennaio 1970, 00:00:00 UTC (Universal Time Coordinated). L’ora zero è il 01 gennaio 1970 00:00:00 UTC. Ora il tempo è: 1646262963669 millisecondi dopo il 01 gennaio 1970
- new Date(milliseconds) crea un nuovo oggetto Date come tempo zero più i millisecondi:
const d = new Date(100000000000);
// Sat Mar 03 1973 10:46:40 GMT+0100 (Ora standard dell’Europa centrale)
const d = new Date(-100000000000);
// Mon Oct 31 1966 15:13:20 GMT+0100 (Ora standard dell’Europa centrale)
DATE INPUT
Esistono generalmente 3 tipi di formati di input della data JavaScript:
Il formato ISO segue uno standard rigoroso in JavaScript. Gli altri formati non sono così ben definiti e potrebbero essere specifici del browser.
DATA OUTPUT
Indipendentemente dal formato di input, JavaScript genererà (per impostazione predefinita) le date in formato stringa di testo completo:
Thu Mar 03 2022 10:34:35 GMT+0100 (Ora standard dell’Europa centrale)
ISO DATES
ISO 8601 è lo standard internazionale per la rappresentazione di date e orari. La sintassi ISO 8601 (AAAA-MM-GG) è anche il formato di data JavaScript predefinito:
const d = new Date(“2015-03-25”);
La data calcolata sarà relativa al tuo fuso orario. A seconda del tuo fuso, il risultato sopra varia tra il 24 marzo e il 25 marzo. Le date ISO possono essere scritte senza specificare il giorno (AAAA-MM):
const d = new Date(“2015-03”);
Il risultato varierà tra il 28 febbraio e il 01 marzo in base al fuso orario. Le date ISO possono essere scritte senza mese e giorno (AAAA):
const d = new Date(“2015”);
I fusi orari varieranno il risultato tra il 31 dicembre 2014 e il 1° gennaio 2015.
ISO DATE (DATE AND TIME)
Le date possono essere scritte aggiungendo ore, minuti e secondi (AAAA-MM-GGTHH:MM:SSZ):
const d = new Date(“2015-03-25T12:00:00Z”);
Data e ora sono separate da una T maiuscola. L’ora UTC è definita con una Z maiuscola. Se vuoi modificare l’ora relativa all’UTC, rimuovi la Z e aggiungi +HH:MM o -HH:MM:
const d = new Date(“2015-03-25T12:00:00-06:30”);
UTC (Universal Time Coordinated) è lo stesso di GMT (Greenwich Mean Time). L’omissione di T o Z in una stringa di data e ora può dare risultati diversi in browser diversi.
TIME ZONES
Quando si imposta una data, senza specificare il fuso orario, JavaScript utilizzerà il fuso orario del browser. Quando si ottiene una data, senza specificare il fuso orario, il risultato viene convertito nel fuso orario del browser. In altre parole: se viene creata una data/ora in GMT (Greenwich Mean Time), la data/ora verrà convertita in CDT (Central US Daylight Time) se un utente naviga dagli Stati Uniti centrali.
SHORT DATES
Le date brevi sono scritte con una sintassi “MM/GG/AAAA” come questa:
const d = new Date(“03/25/2015”);
WARNING!
In alcuni browser, mesi o giorni senza zeri iniziali possono produrre un errore:
const d = new Date(“2015-3-25”);
Il comportamento di “AAAA/MM/GG” non è definito. Alcuni browser proveranno a indovinare il formato. Alcuni restituiranno NaN.
const d = new Date(“2015/03/25”);
Anche il comportamento di “GG-MM-AAAA” non è definito. Alcuni browser proveranno a indovinare il formato. Alcuni restituiranno NaN.
const d = new Date(“25-03-2015”);
LONG DATES
Le date lunghe sono spesso scritte con una sintassi come questa “MMM GG AAAA”:
const d = new Date(“Mar 25 2015”);
Mese e giorno possono essere in qualsiasi ordine, e il mese può essere scritto per intero (January) o abbreviato (Jan), le virgole vengono ignorate. I nomi non fanno distinzione tra maiuscole e minuscole:
const d = new Date(“JANUARY, 25, 2015”);
PARSING DATES
Se si dispone di una stringa di data valida, è possibile utilizzare il metodo Date.parse() per convertirla in millisecondi. Date.parse() restituisce il numero di millisecondi tra la data e il 1° gennaio 1970: È quindi possibile utilizzare il numero di millisecondi per convertirlo in un oggetto Date.
let msec = Date.parse(“March 21, 2012”);
const d = new Date(msec);
METODI GET DATE
METODI SET DATES
APPROFONDIMENTO AI
In JavaScript, l’oggetto Date è utilizzato per lavorare con date e orari. Fornisce vari metodi per ottenere e impostare l’ora, la data e gestire fusi orari. Di seguito una descrizione dettagliata:
Creazione di un Oggetto Date
Puoi creare un nuovo oggetto Date utilizzando il costruttore Date(). Ci sono diversi modi per creare un oggetto Date:
1. Data corrente (senza parametri):
const dataCorrente = new Date();
console.log(dataCorrente);
Restituisce la data e l’ora corrente del sistema.
2. Data con una stringa specifica (passando una stringa nel formato accettato):
const dataDaStringa = new Date(“2024-09-15“);
console.log(dataDaStringa);
È possibile passare una stringa che rappresenta una data. Il formato comune è YYYY-MM-DD, ma supporta anche formati più complessi.
3. Data con parametri numerici (anno, mese, giorno, ora, minuti, secondi, millisecondi):
const dataSpecifica = new Date(2024, 8, 15, 12, 30, 0);
console.log(dataSpecifica);
I mesi sono indicizzati da 0 (gennaio = 0, febbraio = 1, ecc.), quindi 8 rappresenta settembre.
4. Con millisecondi dall’epoch (1 gennaio 1970):
const dataDaMillisecondi = new Date(1633024800000);
console.log(dataDaMillisecondi);
Il valore passato è il numero di millisecondi trascorsi dall’epoch Unix.
Metodi utili per operazioni temporali
•getTime(): Restituisce i millisecondi dall’epoch (1 gennaio 1970).
const millisecondi = dataCorrente.getTime();
console.log(millisecondi);
•setTime(millisecondi): Imposta la data utilizzando il valore di millisecondi dall’epoch.
dataCorrente.setTime(1609459200000); // 1 gennaio 2021
•Date.now(): Restituisce il timestamp corrente in millisecondi dall’epoch.
const oraCorrente = Date.now();
console.log(oraCorrente);
•toLocaleDateString(): Restituisce la data formattata secondo la localizzazione (lingua e paese) specificata.
const dataLocale = dataCorrente.toLocaleDateString(“it-IT“);
console.log(dataLocale);
Confrontare date
È possibile confrontare oggetti Date confrontando i loro timestamp:
•Verificare se una data è prima di un’altra:
const data1 = new Date(“2024-01-01“);
const data2 = new Date(“2024-12-31“);
console.log(data1 < data2); // true
•Verificare se due date sono uguali (confronto timestamp):
const data1 = new Date(“2024-01-01“);
const data2 = new Date(“2024-01-01“);
console.log(data1.getTime() === data2.getTime()); // true
Esempio completo
const oggi = new Date();
console.log(“Oggi:“, oggi);
const dataSpecifica = new Date(2024, 8, 15, 12, 30, 0);
console.log(“Data specifica:“, dataSpecifica);
const differenzaInMillisecondi = oggi.getTime() – dataSpecifica.getTime();
const differenzaInGiorni = differenzaInMillisecondi / (1000 * 60 * 60 * 24);
console.log(“Differenza in giorni:“, differenzaInGiorni);
Conclusione
L’oggetto Date in JavaScript è potente e offre molte funzionalità per la gestione di date e orari. È essenziale conoscere i metodi e i formati supportati per manipolare correttamente le date nel tuo codice.
Scrivi un commento