Automatisk korrigering av datum i JavaScript

JavaScript har en mycket intressant och användbar egenskap: om ett felaktigt ögonblick i tiden angavs när Date-objektet skapades - kommer det automatiskt att omräknas till ett korrekt. Låt oss titta på ett exempel.

Som ni vet finns det inget datum som den 35 januari. Den högsta möjliga dagen i januari är den 31. Det betyder att vårt datum den 35 januari har 4 extra dagar. JavaScript kommer i ett sådant fall helt enkelt att lägga till dessa extra 4 dagar till nästa månad:

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

Det är möjligt att ange inte bara extra dagar, utan även extra månader. Man bör komma ihåg att månader börjar från noll, vilket betyder att den sista korrekta månaden är den 11:e. Om man anger den 12:e månaden blir resultatet januari nästa år:

javascriptlet date = new Date(2018, 12, 1); // anger den 12:e månaden
console.log(date); // blir den 1 januari 2019

Den beskrivna korrigeringen fungerar även åt det andra hållet. Som ni vet är den minsta möjliga dagen i månaden dagen med nummer 1. Därför, om man anger dagen med nummer 0, blir resultatet den sista dagen i föregående månad:

javascriptlet date = new Date(2018, 1, 0); // anger den nollte dagen
console.log(date); // blir den 31 januari

Man kan också ange negativa värden för dagar och månader. Man bör då komma ihåg att den minsta dagen har nummer 1, och den minsta månaden har nummer 0. Det betyder att den minus första dagen hamnar på den 2:a dagen från slutet av föregående månad, och den minus första månaden hamnar helt enkelt i den sista månaden av föregående år:

javascriptlet date = new Date(2018, 1, -1); // anger -1 dag
console.log(date); // blir den 30 januari
javascriptlet date = new Date(2018, -1, 1); // anger -1 månad
console.log(date); // blir den 1 december 2017

Allt som sagts ovan fungerar på samma sätt med timmar, minuter och sekunder:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // anger den 24:e timmen
console.log(date); // blir den 2 januari, 0 timmar
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // anger den 25:e timmen
console.log(date); // blir den 2 januari, 1 timme
Задание 1

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

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

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // vilket datum blir det?
Задание 11

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // vilket datum blir det?
Задание 12

Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // vilket datum blir det?