Automatisk korrigering av datoer i JavaScript

JavaScript har en veldig interessant og nyttig egenskap: hvis et ugyldig tidspunkt ble angitt ved opprettelse av Date-objektet - vil det automatisk bli omregnet til et gyldig. La oss se på et eksempel.

Som du vet, eksisterer ikke datoen 35. januar. Maksimalt mulig dag i januar er 31. Det betyr at vår dato 35. januar har 4 ekstra dager. JavaScript vil i et slikt tilfelle bare legge til disse ekstra 4 dager til neste måned:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // blir 4. februar

Du kan spesifisere ikke bare ekstra dager, men også måneder. Samtidig bør det huskes at måneder starter fra null, no som betyr at den siste gyldige måneden er 11. Hvis du angir 12. måned, vil det bli januar neste år:

javascriptlet date = new Date(2018, 12, 1); // angir 12. måned
console.log(date); // blir 1. januar 2019

Den beskrevne korrigeringen fungerer også i den mindre retningen. Som du vet, er den minste mulige dagen i måneden dagen med nummer 1. Derfor, hvis du angir dag med nummer 0, vil det bli den siste dagen i forrige måned:

javascriptlet date = new Date(2018, 1, 0); // angir nullte dag
console.log(date); // blir 31. januar

Du kan også spesifisere negative verdier for dager og måneder. Samtidig må det huskes at minste dag har nummer 1, og minste måned har nummer 0. Dette betyr at minus første dag faller på 2. dag fra slutten av forrige måned, og minus første måned faller rett og slett på den siste måneden i forrige år:

javascriptlet date = new Date(2018, 1, -1); // angir -1 dag
console.log(date); // blir 30. januar
javascriptlet date = new Date(2018, -1, 1); // angir -1 måned
console.log(date); // blir 1. desember 2017

Alt ovenfor nevnt fungerer på samme måte med timer, minutter og sekunder:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // angir 24. time
console.log(date); // blir 2. januar, 0 timer
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // angir 25. time
console.log(date); // blir 2. januar, 1 time
Задание 1

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

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

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // hvilken dato vil det bli?
Задание 11

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // hvilken dato vil det bli?
Задание 12

Bestem hvilken dato JavaScript vil konvertere følgende tidspunkt til:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // hvilken dato vil det bli?