Automatisk korrektion af datoer i JavaScript
JavaScript har en meget interessant og nyttig
egenskab: hvis der angives et ugyldigt tidspunkt
ved oprettelse af et Date-objekt -
vil det automatisk blive omregnet til et gyldigt.
Lad os se på et eksempel.
Som du ved, eksisterer den 35. januar ikke.
Den maksimalt mulige dag i januar er den 31.
Det betyder, at vores dato den 35. januar
har 4 ekstra dage. JavaScript vil i sådant
tilfælde blot tilføje disse ekstra 4
dage til den næste måned:
let date = new Date(2018, 0, 35);
console.log(date); // bliver den 4. februar
Man kan angive ikke kun ekstra dage, men
også måneder. Man bør huske, at måneder
starter fra nul, hvilket betyder at den sidste gyldige
måned er den 11te. Hvis man angiver den 12te
måned, får man januar næste år:
let date = new Date(2018, 12, 1); // angiver den 12te måned
console.log(date); // bliver den 1. januar 2019
Den beskrevne korrektion fungerer også nedad.
Som du ved, er den mindste
dag i måneden dag nummer 1.
Derfor, hvis man angiver dag nummer 0,
får man den sidste dag i den foregående måned:
let date = new Date(2018, 1, 0); // angiver nulte dag
console.log(date); // bliver den 31. januar
Man kan også angive negative værdier
for dage og måneder. Man bør huske, at
den mindste dag har nummer 1, og
den mindste måned har nummer 0. Det betyder,
at minus første dag falder på den 2.
dag fra slutningen af den foregående måned, og minus
første måned falder simpelthen på den sidste
måned i det foregående år:
let date = new Date(2018, 1, -1); // angiver -1 dag
console.log(date); // bliver den 30. januar
let date = new Date(2018, -1, 1); // angiver -1 måned
console.log(date); // bliver den 1. december 2017
Alt ovenstående fungerer analogt med timer, minutter og sekunder:
let date = new Date(2018, 0, 1, 24, 0, 0); // angiver den 24 time
console.log(date); // bliver den 2. januar, 0 timer
let date = new Date(2018, 0, 1, 25, 0, 0); // angiver den 25 time
console.log(date); // bliver den 2. januar, 1 time
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 1, 35);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 15, 1);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 3, 31);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 1, 31);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 12, 33);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 33, 33);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 5, 0);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 0, 0);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, -12, -33);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // hvilken dato bliver det?