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

如何筛选出时间间隔在30分钟以内的分组事件?

实现方法

核心思路

既然已经按天完成事件分组,只需要对每一天内的事件先按时间排序,再遍历检查相邻事件的时间间隔,把符合条件的事件(或事件组)收集到Interval数组即可。

具体代码实现

假设你的分组后数据结构是{ 日期字符串: [事件对象数组] },每个事件包含startTime字段(ISO时间字符串或时间戳):

场景1:收集所有与相邻事件间隔≤30分钟的事件(去重)

const Interval = [];

// 遍历每一天的事件组
Object.values(groupedEvents).forEach(dailyEvents => {
  // 第一步:按事件发生时间从小到大排序
  const sortedEvents = dailyEvents.sort((a, b) => new Date(a.startTime) - new Date(b.startTime));
  
  // 第二步:遍历检查相邻事件的时间差
  sortedEvents.forEach((event, idx) => {
    if (idx === 0) return; // 第一个事件没有前序事件,跳过
    const prevEvent = sortedEvents[idx - 1];
    const timeDiff = new Date(event.startTime) - new Date(prevEvent.startTime);
    const thirtyMinMs = 30 * 60 * 1000; // 30分钟对应的毫秒数
    
    if (timeDiff <= thirtyMinMs) {
      // 避免重复添加同一个事件
      if (!Interval.includes(prevEvent)) Interval.push(prevEvent);
      if (!Interval.includes(event)) Interval.push(event);
    }
  });
});

场景2:收集连续的事件组(比如A-B-C互相间隔≤30分钟,作为一个组存入)

如果需要把连续满足间隔条件的事件作为整体存入Interval,可以用以下逻辑:

const Interval = [];

Object.values(groupedEvents).forEach(dailyEvents => {
  const sortedEvents = dailyEvents.sort((a, b) => new Date(a.startTime) - new Date(b.startTime));
  let currentGroup = [];
  
  sortedEvents.forEach((event, idx) => {
    currentGroup.push(event);
    // 最后一个事件直接进入收尾判断
    if (idx === sortedEvents.length - 1) return;
    
    const nextEvent = sortedEvents[idx + 1];
    const timeDiff = new Date(nextEvent.startTime) - new Date(event.startTime);
    const thirtyMinMs = 30 * 60 * 1000;
    
    // 间隔超过30分钟时,结束当前组(组内事件≥2才存入)
    if (timeDiff > thirtyMinMs) {
      if (currentGroup.length >= 2) {
        Interval.push([...currentGroup]);
      }
      currentGroup = [];
    }
  });
  
  // 处理最后一组未存入的事件
  if (currentGroup.length >= 2) {
    Interval.push([...currentGroup]);
  }
});

注意事项

  • 如果事件的时间字段是时间戳(数值类型),直接用event.startTime - prevEvent.startTime计算差值即可,无需new Date转换。
  • 如果需要更精确的时间比较(比如排除日期影响,只看时分秒),可以在排序和计算差值时,提取事件时间的时分秒部分转换为分钟数再比较。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:35:21