You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中忽略年份判断日期是否属于10月1日至次年5月31日区间

阶梯费率日期区间判断方案

核心思路

JS的Date.getMonth()会返回0-11的0基月份数值,我们可以直接通过月份范围判断所属费率区间,完全不需要复杂的多条件拼接,且天然忽略年份影响:

  • 冬季费率区间(6月1日-9月30日)对应月份返回值为5、6、7、8
  • 夏季费率区间(10月1日-次年5月31日)对应月份返回值为0、1、2、3、4、9、10、11

代码实现

单个日期判断

// 判断是否属于冬季费率区间
const isWinterDate = (date) => {
  const month = date.getMonth()
  return month >= 5 && month <= 8
}
// 判断是否属于夏季费率区间
const isSummerDate = (date) => !isWinterDate(date)

计费周期判断

针对整段计费周期判定需求,只要周期起止都属于对应区间即可判定:

// 判断整段周期是否属于夏季费率
const isSummerPeriod = (dateFrom, dateTo) => {
  return !isWinterDate(dateFrom) && !isWinterDate(dateTo)
}

// 判断整段周期是否属于冬季费率
const isWinterPeriod = (dateFrom, dateTo) => {
  return isWinterDate(dateFrom) && isWinterDate(dateTo)
}

你提到的测试用例4月25日-5月22日,两个日期的getMonth()返回值分别为3、4,都不在冬季范围内,会正确判定为夏季费率,符合业务需求。

跨区间周期处理

如果出现周期跨两个区间的情况(比如5月30日-6月5日),可以根据业务规则扩展逻辑,比如按占比更高的区间计费、或者直接就高按冬季费率计费,都可以直接复用上面的基础判断方法。

内容的提问来源于stack exchange,提问作者akila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:57:03