Correzione automatica delle date in JavaScript
JavaScript ha una caratteristica molto interessante e utile:
se durante la creazione di un oggetto Date
viene specificato un momento temporale non corretto,
esso verrà automaticamente ricalcolato in uno corretto.
Vediamo un esempio.
Come sapete, la data del 35 gennaio non esiste.
Il giorno massimo possibile per gennaio è 31.
Ciò significa che la nostra data del 35 gennaio
ha 4 giorni in eccesso. JavaScript in un caso
del genere aggiungerà semplicemente questi 4
giorni in più al mese successivo:
let date = new Date(2018, 0, 35);
console.log(date); // risulterà il 4 febbraio
È possibile specificare non solo giorni in eccesso, ma
anche mesi. Bisogna ricordare che i mesi
iniziano da zero, quindi l'ultimo mese corretto
è l'undicesimo (11). Se si specifica il dodicesimo
mese (12), si otterrà il gennaio dell'anno successivo:
let date = new Date(2018, 12, 1); // specifichiamo il 12° mese
console.log(date); // risulterà il 1 gennaio 2019
La correzione descritta funziona anche verso il basso.
Come sapete, il giorno minimo
del mese è il giorno numero 1.
Pertanto, se si specifica il giorno numero 0,
si otterrà l'ultimo giorno del mese precedente:
let date = new Date(2018, 1, 0); // specifichiamo il giorno zero
console.log(date); // risulterà il 31 gennaio
Si possono anche specificare valori negativi
per giorni e mesi. In questo caso bisogna ricordare che
il giorno minimo ha numero 1, e
il mese minimo ha numero 0. Ciò significa
che il giorno meno uno corrisponderà al 2
giorno dalla fine del mese precedente, mentre il mese
meno uno corrisponderà semplicemente all'ultimo
mese dell'anno precedente:
let date = new Date(2018, 1, -1); // specifichiamo -1 giorno
console.log(date); // risulterà il 30 gennaio
let date = new Date(2018, -1, 1); // specifichiamo -1 mese
console.log(date); // risulterà il 1 dicembre 2017
Tutto quanto detto sopra funziona analogamente con ore, minuti e secondi:
let date = new Date(2018, 0, 1, 24, 0, 0); // specifichiamo la 24a ora
console.log(date); // risulterà il 2 gennaio, 0 ore
let date = new Date(2018, 0, 1, 25, 0, 0); // specifichiamo la 25a ora
console.log(date); // risulterà il 2 gennaio, 1 ora
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 1, 35);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 15, 1);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 3, 31);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 1, 31);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 12, 33);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 33, 33);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 5, 0);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 0, 0);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, -12, -33);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // quale data sarà?
Determinate in quale data JavaScript convertirà il seguente momento temporale:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // quale data sarà?