Строковое сравнение дат на 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';