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

如何判断日期数组中的元素是否落在另一数组的指定日期间隔内

检查日期数组元素是否落在指定日期间隔内的实现方案

实现逻辑

  • 将所有日期统一转换为时间戳进行数值比较,自动适配时区差异,无需手动处理时区转换
  • 遍历所有待检查日期,逐个校验是否落在任意一个给定的区间内
  • 区间结束日期默认补齐到当天23:59:59.999,保证结束日期当天的所有时间点都被判定为在区间内,如果不需要包含结束日期可以去掉补齐逻辑

实现代码

// 原有数组
let dateArray = ['2018-05-04T00:00:00+01:00', '2019-04-20T00:00:00+01:00', '2020-05-29T00:00:00+01:00'];
let rangesArray = [['2021-09-01','2022-09-01'],['2019-09-01','2020-09-01']];

// 检查单个日期是否落在任意区间的工具函数
function checkDateInRanges(dateStr, ranges) {
  const checkTime = new Date(dateStr).getTime();
  // 时间戳非法直接返回false
  if (isNaN(checkTime)) return false;
  return ranges.some(([startStr, endStr]) => {
    const startTime = new Date(startStr).getTime();
    // 结束日期补齐到当天最后一毫秒
    const endTime = new Date(endStr).getTime() + 24 * 60 * 60 * 1000 - 1;
    return checkTime >= startTime && checkTime <= endTime;
  })
}

// 遍历日期数组得到校验结果
const checkResult = dateArray.map(date => checkDateInRanges(date, rangesArray));
console.log(checkResult); // 输出 [false, false, true]

结果解释

针对示例中的输入:

  • 2018-05-04T00:00:00+01:00 早于所有区间开始时间,返回false
  • 2019-04-20T00:00:00+01:00 早于第二个区间的开始时间2019-09-01,返回false
  • 2020-05-29T00:00:00+01:00 落在第二个区间[2019-09-01, 2020-09-01]范围内,返回true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:03