Strengsammenligning av datoer i JavaScript
La oss si at vi har to datoer i følgende tekstformat:
let date1 = '2020-12-01';
let date2 = '2019-12-01';
I dette tilfellet kan vi sammenligne disse datoene og finne ut hvilken av dem som er større:
console.log(date1 > date2); // vil skrive ut true
Hvordan foregår denne sammenligningen av datoer? Saken er at våre datoer representerer strenger, og JavaScript sammenligner dem som strenger. Det vil si at den først sammenligner de første tegnene i de to datoene: hvis de er like, så sammenligner JavaScript de andre tegnene, og så videre, til den finner en forskjell. Takket være at i vårt datoformat er året plassert først, deretter måneden, og deretter dagen, er en slik sammenligning mulig.
Saken er at hvis sifferet i det første året viser seg å være større enn sifferet i det andre året, betyr det allerede at det ikke spiller noen rolle hva som skjer med månedene og dagene - det første året er definitivt større. Hvis årene derimot er like, vil den datoen være større som har den største måneden. Og hvis månedene også er like, vil den datoen være større som har den største dagen. Vel, og hvis dagene også er like, er datoene like.
Det er også viktig at datoene er i samme format. I vårt tilfelle er skilletegnene mellom delene av datoene bindestreker. Dette er selvfølgelig ikke nødvendig. For eksempel kan man sette punktum:
let date1 = '2020.12.01';
let date2 = '2019.12.01';
Eller helt fjerne skilletegn:
let date1 = '20201201';
let date2 = '20191201';
Hovedsaken er at for at sammenligningen skal være korrekt, må plasseringen være som følger: først år, deretter måned, deretter dag.
Skriv kode som sammenligner de to følgende datoene og skriver ut en melding om hvilken av dem som er større:
let date1 = '2020-11-30';
let date2 = '2020-12-01';