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
Задание 1

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // hvilken dato bliver det?
Задание 2

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // hvilken dato bliver det?
Задание 3

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // hvilken dato bliver det?
Задание 4

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // hvilken dato bliver det?
Задание 5

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // hvilken dato bliver det?
Задание 6

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // hvilken dato bliver det?
Задание 7

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // hvilken dato bliver det?
Задание 8

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // hvilken dato bliver det?
Задание 9

Bestem, hvilken dato JavaScript vil omdanne følgende tidspunkt til:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // hvilken dato bliver det?
Задание 10

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?
Задание 11

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?
Задание 12

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?