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

如何从预订列表中获取距离当前日期最近的未来日期

问题原因
  • 现有排序逻辑为按预订开始时间正序排列,排序后数组的第一个元素是全量列表里最早的历史日期,不符合你要找未来最近日期的需求
  • 缺少过滤步骤:没有先筛掉所有开始时间早于当前日期的历史预订,排序范围包含了无效的历史数据
修复后可运行代码
const bookingsList = [
  {
    sitterName: 'John',
    start: '2021-12-09',
    end: '2021-12-09',
    status: 'accepted',
  },
  {
    sitterName: 'John',
    start: '2021-12-06',
    end: '2021-12-06',
    status: 'accepted',
  },
  {
    sitterName: 'John',
    start: '2021-12-08',
    end: '2021-12-08',
    status: 'accepted',
  },
  {
    sitterName: 'Guru',
    start: '2021-11-30',
    end: '2021-11-30',
    status: 'accepted',
  },
];

// 先获取今日0点的时间戳,避免当天的预订因为时间部分被误过滤
const todayTimestamp = new Date(new Date().toLocaleDateString()).getTime()

// 第一步:过滤出所有开始日期晚于等于今日的预订
const futureBookings = bookingsList.filter(item => {
  const startTimestamp = new Date(item.start).getTime()
  return startTimestamp >= todayTimestamp
})

// 第二步:对未来预订按开始时间正序排序
const sortedBookings = futureBookings.sort((a, b) => {
  const dateA = new Date(a.start).getTime();
  const dateB = new Date(b.start).getTime();
  return dateA - dateB;
})

// 取第一个就是晚于当前日期最近的预订,增加空判断避免无未来预订时报错
if (sortedBookings.length) {
  console.log(sortedBookings[0].start);
} else {
  console.log('暂无未来预订')
}
改动说明
  • 新增过滤逻辑,只保留开始时间晚于等于今日的预订记录,排除无效历史数据
  • 排序返回值直接用时间戳相减,比三元判断更严谨,不会出现日期相等时排序异常的问题
  • 增加空数组判断,避免没有未来预订时代码运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:24:05