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:
javascriptlet 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:
javascriptlet 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:
javascriptlet 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:
javascriptlet date = new Date(2018, 1, -1); // angiver -1 dag
console.log(date); // bliver den 30. januar
javascriptlet 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:
javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // angiver den 24 time
console.log(date); // bliver den 2. januar, 0 timer
javascriptlet 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:
javascriptlet date = new Date(2018, 1, 35);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 15, 1);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 3, 31);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 1, 31);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 12, 33);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 33, 33);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 5, 0);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, 0, 0);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet date = new Date(2018, -12, -33);
console.log(date); // hvilken dato bliver det?
Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:
javascriptlet 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:
javascriptlet 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:
javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // hvilken dato bliver det?