თარიღების სტრიქონული შედარება JavaScript-ში
დავუშვათ გვაქვს ორი თარიღი შემდეგი ტექსტურ ფორმატში:
let date1 = '2020-12-01';
let date2 = '2019-12-01';
ამ შემთხვევაში შესაძლებელია ამ თარიღების შედარება და იმის გარკვევა, რომელი თარიღია მეტი:
console.log(date1 > date2); // გამოიტანს true-ს
როგორ მოქმედებს ამ თარიღების შედარება? საქმე ისაა, რომ ჩვენი თარიღები წარმოადგენენ სტრიქონებს და JavaScript მათ სტრიქონებად ადარებს. ანუ ის ჯერ ადარებს ორი თარიღის პირველ სიმბოლოებს: თუ ისინი ერთნაირია, JavaScript ადარებს მეორე სიმბოლოებს, და ასე შემდეგ, სანამ სხვაობას არ იპოვის. იმის გამო, რომ ჩვენს ფორმატში თარიღი ჯერ წელია მოცემული, შემდეგ თვე, და after that დღე, შესაძლებელია ასეთი შედარება.
საქმე ისაა, რომ თუ პირველი წლის ციფრი მეტია მეორე წლის ციფრზე, ეს უკვე ნიშნავს, რომ აღარ აქვს მნიშვნელობა, რა არის თვეებსა და დღეებთან - პირველი წელი ნამდვილად მეტია. თუ წლები ემთხვევა, მაშინ მეტი იქნება ის თარიღი, რომლის თვე მეტია. ხოლო თუ თვეებიც ემთხვევა, მაშინ მეტი იქნება ის თარიღი, რომლის დღე მეტია. და, თუ დღეებიც ერთნაირია, მაშინ თარიღები ტოლია.
ასევე მნიშვნელოვანია, რომ თარიღები იყოს ერთი ფორმატის. ჩვენს შემთხვევაში თარიღის ნაწილების გამყოფები არიან დეფისები. ეს, რა თქმა უნდა, არ არის აუცილებელი. მაგალითად, შესაძლებელია დავსვათ წერტილები:
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';