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

JavaScript实现从日期数组中向上取匹配下一个日期

实现日期数组的向上取整匹配逻辑

核心思路是将日期转换为可直接比较的格式(如时间戳、语言内置日期对象),再通过遍历找到第一个大于目标日期的元素,具体步骤如下:

通用步骤

  • 统一日期格式:把所有字符串日期转换为可比较的类型,确保能直接判断先后顺序
  • 排序(可选):如果原日期数组未按时间升序排列,先对转换后的日期数组进行排序
  • 遍历匹配:逐个对比数组中的日期与目标日期,找到第一个大于目标日期的元素,即为所求;若所有日期都早于目标日期,可返回最后一个日期或根据需求处理

JavaScript 实现示例

// 示例日期数组
const dateArray = ["2022-09-15", "2022-10-10", "2022-12-01"];
// 目标日期
const targetDateStr = "2022-09-29";

// 1. 转换为时间戳并排序(若原数组已升序可跳过排序)
const sortedTimestamps = dateArray
  .map(dateStr => new Date(dateStr).getTime())
  .sort((a, b) => a - b);

// 2. 转换目标日期为时间戳
const targetTimestamp = new Date(targetDateStr).getTime();

// 3. 查找第一个大于目标的日期
let result = null;
for (const ts of sortedTimestamps) {
  if (ts > targetTimestamp) {
    result = new Date(ts).toISOString().split('T')[0];
    break;
  }
}

// 处理所有日期都早于目标的情况
if (!result) {
  result = new Date(sortedTimestamps.at(-1)).toISOString().split('T')[0];
  // 也可根据需求返回 null 或提示信息
}

console.log(result); // 输出 "2022-10-10"

Python 实现示例

from datetime import datetime

date_array = ["2022-09-15", "2022-10-10", "2022-12-01"]
target_date_str = "2022-09-29"

// 1. 转换为 datetime 对象并排序(若原数组已升序可跳过排序)
sorted_dates = sorted([datetime.strptime(d, "%Y-%m-%d") for d in date_array])
target_date = datetime.strptime(target_date_str, "%Y-%m-%d")

// 2. 查找第一个大于目标的日期
result = None
for d in sorted_dates:
    if d > target_date:
        result = d.strftime("%Y-%m-%d")
        break

// 处理所有日期都早于目标的情况
if not result:
    result = sorted_dates[-1].strftime("%Y-%m-%d")

print(result)  // 输出 "2022-10-10"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:25:21