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

如何在JavaScript中按日期范围过滤API返回的JSON数据

问题原因

你当前的过滤逻辑是直接对日期字符串做大小比较,JS字符串比较是基于Unicode编码逐位对比的,"Feb 10, 2020"和"Feb 2, 2020"对比时,会先匹配到前4位Feb 一致,第5位1的编码小于2,就会判定"Feb 10, 2020" < "Feb 2, 2020",导致2月2日到9日的日期被误判为不在范围内。

修复方案

把所有待比较的日期字符串都转为Date对象,再基于时间戳做大小对比即可,修改后的代码如下:

async function getData(){
  try {
    const respose = await fetch("http://34.198.81.140/attendance.json");
    if (!respose.ok) throw new Error('接口请求失败');
    const myData = await respose.json();
    
    // 起止日期统一转成时间戳
    const startTimestamp = new Date("Feb 1, 2020").getTime();
    const endTimestamp = new Date("Feb 29, 2020").getTime();
    
    const result = myData.filter((item) => {
      // 每条数据的日期也转成时间戳再比较
      const itemTimestamp = new Date(item.date).getTime();
      return itemTimestamp >= startTimestamp && itemTimestamp <= endTimestamp;
    })
    console.log(result);
  } catch (err) {
    console.error('运行出错:', err);
  }
}
getData()

补充说明:如果你的考勤数据涉及跨时区场景,可以进一步把所有日期转成UTC时间戳再比较,避免时区偏移导致的判断误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:06:03