如何在 javascript 中执行部分日期比较,忽略年份?

How to perform partial date comparison, ignoring the year, in javascript?

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

date1 < date2 && date2 > date3

但是如何才能只访问月份和日期呢?我知道 Date object 可以 return 既是月又是日,但老实说,我很困惑如何只比较它们。

您可以从日期中提取可比较的 "key"(例如 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)
)