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:
let 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:
let 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:
let 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:
let date = new Date(2018, 1, -1); // anger -1 dag
console.log(date); // blir den 30 januari
let 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:
let date = new Date(2018, 0, 1, 24, 0, 0); // anger den 24:e timmen
console.log(date); // blir den 2 januari, 0 timmar
let date = new Date(2018, 0, 1, 25, 0, 0); // anger den 25:e timmen
console.log(date); // blir den 2 januari, 1 timme
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 1, 35);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 15, 1);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 3, 31);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 1, 31);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 12, 33);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 33, 33);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 5, 0);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 0, 0);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, -12, -33);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // vilket datum blir det?
Bestäm till vilket datum JavaScript omvandlar följande ögonblick i tiden:
let date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // vilket datum blir det?