Σύγκριση Ημερομηνιών ως Συμβολοσειρών στην JavaScript
Ας υποθέσουμε ότι έχουμε δύο ημερομηνίες στην ακόλουθη μορφή κειμένου:
let date1 = '2020-12-01';
let date2 = '2019-12-01';
Σε αυτήν την περίπτωση, μπορούμε να συγκρίνουμε αυτές τις ημερομηνίες και να μάθουμε ποια από αυτές είναι μεγαλύτερη:
console.log(date1 > date2); // θα εμφανίσει true
Πώς γίνεται η σύγκριση αυτών των ημερομηνιών; Το γεγονός είναι ότι οι ημερομηνίες μας είναι συμβολοσειρές και η JavaScript τις συγκρίνει ως συμβολοσειρές. Δηλαδή, πρώτα συγκρίνει τους πρώτους χαρακτήρες των δύο ημερομηνιών: εάν είναι ίδιοι, τότε η JavaScript συγκρίνει τους δεύτερους χαρακτήρες, και ούτω καθεξής, μέχρι να βρει διαφορές. Χάρη στο γεγονός ότι στη μορφή μας οι ημερομηνίες έχουν πρώτα το έτος, μετά το μήνα και μετά την ημέρα, είναι δυνατή μια τέτοια σύγκριση.
Το γεγονός είναι ότι εάν το ψηφίο του πρώτου έτους είναι μεγαλύτερο από το ψηφίο του δεύτερου έτους, τότε πλέον δεν έχει σημασία τι συμβαίνει με τους μήνες και τις ημέρες - το πρώτο έτος είναι σίγουρα μεγαλύτερο. Εάν τα έτη συμπίπτουν, τότε μεγαλύτερη θα είναι η ημερομηνία που έχει τον μεγαλύτερο μήνα. Και εάν και οι μήνες συμπίπτουν, τότε μεγαλύτερη θα είναι η ημερομηνία που έχει τη μεγαλύτερη ημέρα. Λοιπόν, και εάν και οι ημέρες είναι ίδιες, τότε οι ημερομηνίες είναι ίσες.
Είναι επίσης σημαντικό οι ημερομηνίες να είναι στην ίδια μορφή. Στην περίπτωσή μας, οι διαχωριστές των μερών της ημερομηνίας είναι παύλες. Αυτό, φυσικά, δεν είναι απαραίτητο. Για παράδειγμα, μπορούμε να βάλουμε τελείες:
let date1 = '2020.12.01';
let date2 = '2019.12.01';
Ή ακόμα και να αφαιρέσουμε τους διαχωριστές:
let date1 = '20201201';
let date2 = '20191201';
Το κύριο πράγμα, για να είναι η σύγκριση σωστή, η διάταξη πρέπει να είναι η ακόλουθη: πρώτα το έτος, μετά ο μήνας, μετά η ημέρα.
Γράψτε κώδικα που θα συγκρίνει τις δύο ημερομηνίες που δίνονται παρακάτω και θα εμφανίσει μήνυμα σχετικά με το ποια από αυτές είναι μεγαλύτερη:
let date1 = '2020-11-30';
let date2 = '2020-12-01';