Päivämäärien vertailu merkkijonoina JavaScriptissä
Oletetaan, että meillä on kaksi päivämäärää seuraavassa tekstimuodossa:
let date1 = '2020-12-01';
let date2 = '2019-12-01';
Tässä tapauksessa voimme vertailla näitä päivämääriä ja selvittää, kumpi niistä on suurempi:
console.log(date1 > date2); // tulostaa true
Miten näiden päivämäärien vertailu tapahtuu? Asia on niin, että päivämäärämme ovat merkkijonoja ja JavaScript vertailee niitä merkkeinä. Eli se vertailee ensin kahden päivämäärän ensimmäisiä merkkejä: jos ne ovat samat, JavaScript vertailee toisia merkkejä, ja niin edelleen, kunnes se löytää eron. Sen ansiosta, että muodossamme päivämäärässä on ensin vuosi, sitten kuukausi ja sitten päivä, tällainen vertailu on mahdollista.
Asia on niin, että jos ensimmäisen vuoden numero osoittautuu suuremmaksi kuin toisen vuoden numero, ei enää ole väliä, mitä kuukausissa ja päivissä on - ensimmäinen vuosi on ehdottomasti suurempi. Jos vuodet ovat samat, on suurempi se päivämäärä, jolla on suurempi kuukausi. Ja jos kuukaudet ovat samat, on suurempi se päivämäärä, jolla on suurempi päivä. No, ja jos päivätkin ovat samat, päivämäärät ovat yhtä suuret.
On myös tärkeää, että päivämäärät ovat samassa muodossa. Meidän tapauksessamme päivämäärän osien erottimina ovat viivat. Tämä ei tietenkään ole välttämätöntä. Voimme esimerkiksi laittaa pisteet:
let date1 = '2020.12.01';
let date2 = '2019.12.01';
Tai poistaa erottimet kokonaan:
let date1 = '20201201';
let date2 = '20191201';
Tärkeintä on, että vertailu on oikea, sijoituksen on oltava seuraava: ensin vuosi, sitten kuukausi, sitten päivä.
Kirjoita koodi, joka vertaa alla annettuja kahta päivämäärää ja tulostaa viestin siitä, kumpi niistä on suurempi:
let date1 = '2020-11-30';
let date2 = '2020-12-01';