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:
let 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:
let 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:
let 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ī:
let date = new Date(2018, 1, -1); // norādam -1 dienu
console.log(date); // iegūsies 30. janvāris
let 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:
let date = new Date(2018, 0, 1, 24, 0, 0); // norādam 24. stundu
console.log(date); // iegūsies 2. janvāris, 0 stundas
let date = new Date(2018, 0, 1, 25, 0, 0); // norādam 25. stundu
console.log(date); // iegūsies 2. janvāris, 1 stunda
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 1, 35);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 15, 1);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 3, 31);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 1, 31);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 12, 33);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 33, 33);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 5, 0);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 0, 0);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, -12, -33);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // kāds datums būs?
Nosakiet, kādā datumā JavaScript pārveidos šādu laika momentu:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // kāds datums būs?