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

Angular 13中筛选两个日期间隔范围内列表项的实现方案

长列表按日期裁剪实现方案

基础实现思路

当前需求是筛选date属性落在2021年8月1日 至 2022年10月12日区间内的列表项,因为所有条目已经内置标准日期对象,不需要额外做字符串解析,直接通过原生日期大小比较即可完成筛选,不需要引入第三方依赖。

代码示例

JavaScript 运行环境

// 定义筛选区间边界,注意JS Date对象月份从0开始计数:8月对应索引7,10月对应索引9
const RANGE_START = new Date(2021, 7, 1, 0, 0, 0);
const RANGE_END = new Date(2022, 9, 12, 23, 59, 59);

// 直接遍历原列表做过滤
const croppedList = originList.filter(item => {
  return item.date >= RANGE_START && item.date <= RANGE_END;
});

Python 运行环境

from datetime import datetime

RANGE_START = datetime(2021, 8, 1, 0, 0, 0)
RANGE_END = datetime(2022, 10, 12, 23, 59, 59)

cropped_list = [item for item in origin_list if RANGE_START <= item.date <= RANGE_END]

选型理由

  • 性能足够好:全程用原生语法实现,没有额外依赖开销,单次遍历的时间复杂度为O(n),哪怕是十万级条目的列表,处理耗时也在毫秒级,完全不会出现页面卡顿、接口响应慢之类的问题。
  • 边界容错率高:手动指定了起止时间的时分秒值,结束时间取区间最后一天的23:59:59,避免了默认日期取0点导致的10月12日当天的条目被误过滤的问题;而且当前是固定区间筛选,不需要做动态月份推算,从根源上避免了跨月、闰年、大小月导致的日期计算错误。
  • 拓展性强:区间边界值抽为独立常量,后续如果要切换成提到的两类动态6个月区间规则,只需要修改RANGE_START和RANGE_END的生成逻辑即可,核心的筛选判断代码不需要做任何改动。

动态区间适配提示:如果后续要切换规则,仅需替换边界生成逻辑:

  • 当日向前追溯6个月:RANGE_START设为当前日期减6个月,RANGE_END设为当前日期
  • 当日向后顺延6个月:RANGE_START设为当前日期,RANGE_END设为当前日期加6个月

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 18:21:52