Automātiskā datumu korekcija JavaScript

JavaScript ir ļoti interesanta un noderīga īpatnība: ja, izveidojot Date objektu, tika norādīts nekorekts laika moments - tas automātiski tiks pārrēķināts korektā. Apskatīsim piemērā.

Kā jūs zināt, 35. janvāra datums neeksistē. Maksimāli iespējamā janvāra diena ir 31. Izrādās, ka mūsu 35. janvāra datums ir 4 dienas par daudz. JavaScript šajā gadījumā vienkārši pievienos šīs papildu 4 dienas nākamajam mēnesim:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // izdosies 4. februāris

Var norādīt ne tikai papildu dienas, bet arī mēnešus. Jāatceras, ka mēneši sākas no nulles, kas nozīmē, ka pēdējais korektais mēnesis ir 11. mēnesis. Ja norāda 12. mēnesi, tad iegūs janvāri nākamgad:

javascriptlet date = new Date(2018, 12, 1); // norādam 12. mēnesi
console.log(date); // iegūsies 1. janvāris 2019. gadā

Aprakstītā korekcija strādā arī mazākā virzienā. Kā jūs zināt, viszemākā mēneša diena ir diena ar numuru 1. Tāpēc, ja norāda dienu ar numuru 0, tad iegūs pēdējo iepriekšējā mēneša dienu:

javascriptlet date = new Date(2018, 1, 0); // norādam nulles dienu
console.log(date); // iegūsies 31. janvāris

Var arī norādīt negatīvas dienu un mēnešu vērtības. Jāatceras, ka zemākā diena ir ar numuru 1, bet zemākais mēnesis - ar numuru 0. Tas nozīmē, ka mīnus pirmā diena nonāks 2 dienas no iepriekšējā mēneša beigām, bet mīnus pirmais mēnesis nonāks vienkārši pēdējā iepriekšējā gada mēnesī:

javascriptlet date = new Date(2018, 1, -1); // norādam -1 dienu
console.log(date); // iegūsies 30. janvāris
javascriptlet date = new Date(2018, -1, 1); // norādam -1 mēnesi
console.log(date); // iegūsies 1. decembris 2017. gadā

Viss iepriekš minētais līdzīgi strādā ar stundām, minūtēm un sekundēm:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // norādam 24. stundu
console.log(date); // iegūsies 2. janvāris, 0 stundas
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // norādam 25. stundu
console.log(date); // iegūsies 2. janvāris, 1 stunda
Задание 1

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // kāds datums būs?
Задание 2

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // kāds datums būs?
Задание 3

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // kāds datums būs?
Задание 4

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // kāds datums būs?
Задание 5

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // kāds datums būs?
Задание 6

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // kāds datums būs?
Задание 7

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // kāds datums būs?
Задание 8

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // kāds datums būs?
Задание 9

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // kāds datums būs?
Задание 10

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // kāds datums būs?
Задание 11

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // kāds datums būs?
Задание 12

Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // kāds datums būs?