首页 > 解决方案 > 如何在javascript中执行部分日期比较,忽略年份?

问题描述

正如标题所说,我想编写一些基本代码来检查给定 JavaScriptDate对象的月份和日期是否在某个范围之间。我知道要比较常规日期,可以执行以下操作...

date1 < date2 && date2 > date3

但是如何只能访问月份和日期?我知道该Date对象可以返回月份和日期,但老实说,我很难理解如何只比较它们。

标签: javascriptdateobjectcomparisonpartial

解决方案


您可以从您的日期(例如 )中提取一个可比较的“键”month*100+day并将这些键作为数字进行比较:

function compareByMD(date1, date2) {
    let a = date1.getMonth() * 100 + date1.getDate();
    let b = date2.getMonth() * 100 + date2.getDate();
    return (a > b) - (a < b);
}

//

console.log(
    [
        new Date(2009, 7, 15),
        new Date(2011, 8, 3),
        new Date(2019, 5, 3),
        new Date(2022, 7, 13),
    ].sort(compareByMD)
)


推荐阅读