Datumvergelijking met strings in JavaScript
Stel we hebben twee datums in het volgende tekst formaat:
let date1 = '2020-12-01';
let date2 = '2019-12-01';
In dat geval kunnen we deze datums vergelijken en erachter komen welke van deze datums groter is:
console.log(date1 > date2); // geeft true weer
Hoe werkt deze vergelijking van datums? Het zit zo, onze datums zijn strings en JavaScript vergelijkt ze als strings. Dat betekent dat het eerst de eerste karakters van de twee datums vergelijkt: als ze hetzelfde zijn, vergelijkt JavaScript de tweede karakters, en zo verder, totdat het een verschil vindt. Dankzij het feit dat in ons datumformaat eerst het jaar komt, dan de maand, en dan de dag, is een dergelijke vergelijking mogelijk.
Het punt is dat als het cijfer van het eerste jaar groter blijkt te zijn dan het cijfer van het tweede jaar, het er dan al niet meer toe doet wat er met de maanden en dagen is - het eerste jaar is zeker groter. Als de jaren overeenkomen, dan is de datum groter waarvan de maand groter is. En als de maanden ook overeenkomen, dan is de datum groter waarvan de dag groter is. Nou, en als de dagen ook gelijk zijn, dan zijn de datums gelijk.
Het is ook belangrijk dat de datums in hetzelfde formaat staan. In ons geval zijn de scheidingstekens van de datumonderdelen koppelteken. Dit is uiteraard niet verplicht. We kunnen bijvoorbeeld punten plaatsen:
let date1 = '2020.12.01';
let date2 = '2019.12.01';
Of zelfs de scheidingstekens weglaten:
let date1 = '20201201';
let date2 = '20191201';
Het belangrijkste is dat voor een correcte vergelijking, de volgorde als volgt moet zijn: eerst het jaar, dan de maand, dan de dag.
Schrijf code die de twee hieronder genoemde datums vergelijkt en een bericht weergeeft over welke ervan groter is:
let date1 = '2020-11-30';
let date2 = '2020-12-01';