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

按小时时间范围累计记录数:指定日期与预订数据的分组统计需求

实现日期查找与分组的解决方案

没问题,我来帮你搞定这个日期分组的需求!核心思路就是统一日期格式后,把bookings里的条目按sortDates指定的日期归类,下面是一步步的具体实现:

步骤1:统一日期格式

sortDates是DD/MM/YYYY格式,而bookings里的bookingStart是YYYY-MM-DD HH:mm:ss格式,首先得把两者的日期格式对齐,方便匹配。写个简单的转换函数:

function convertToYMD(dateStr) {
  // 拆分DD/MM/YYYY为日、月、年
  const [day, month, year] = dateStr.split('/');
  // 拼接成和bookingStart一致的YYYY-MM-DD格式
  return `${year}-${month}-${day}`;
}

步骤2:初始化分组容器

用Map来创建一个日期到预订列表的映射,确保每个sortDates里的日期都有对应的分组:

const sortDates = [ '14/04/2018', '12/04/2018', '10/04/2018' ];
const bookings = [ 
  { bookingStart: '2018-04-14 00:30:00' }, 
  { bookingStart: '2018-04-14 00:42:00' }, 
  { bookingStart: '2018-04-14 13:35:00' }, 
  { bookingStart: '2018-04-12 12:30:00' }, 
];

// 初始化分组Map,每个日期对应空数组
const dateGroups = new Map();
sortDates.forEach(date => {
  const standardDate = convertToYMD(date);
  dateGroups.set(standardDate, []);
});

步骤3:遍历预订数据完成分组

接下来把每个预订条目放到对应的日期分组里:

bookings.forEach(booking => {
  // 提取bookingStart里的YYYY-MM-DD日期部分
  const bookingDate = booking.bookingStart.split(' ')[0];
  // 如果该日期在我们的分组列表中,就添加进去
  if (dateGroups.has(bookingDate)) {
    dateGroups.get(bookingDate).push(booking);
  }
  // 可选:如果要处理不在sortDates里的预订日期,可以加这段代码
  // else {
  //   if (!dateGroups.has('未指定日期')) dateGroups.set('未指定日期', []);
  //   dateGroups.get('未指定日期').push(booking);
  // }
});

步骤4:按sortDates的顺序输出结果

如果需要保持sortDates的原始顺序输出分组,可以这样处理:

const finalResult = sortDates.map(date => ({
  originalDate: date, // 保留你原始的DD/MM/YYYY格式
  relatedBookings: dateGroups.get(convertToYMD(date))
}));

console.log(finalResult);

运行后会得到这样的结果:

[
  {
    originalDate: '14/04/2018',
    relatedBookings: [
      { bookingStart: '2018-04-14 00:30:00' },
      { bookingStart: '2018-04-14 00:42:00' },
      { bookingStart: '2018-04-14 13:35:00' }
    ]
  },
  {
    originalDate: '12/04/2018',
    relatedBookings: [ { bookingStart: '2018-04-12 12:30:00' } ]
  },
  {
    originalDate: '10/04/2018',
    relatedBookings: []
  }
]

这个方案既保证了分组的准确性,又能灵活处理日期格式差异,还能严格遵循你指定的日期顺序~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:43:02