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

如何从不含周末及节假日的CSV日期列表中获取最近日期?

从CSV中获取最接近当前日期的有效日期

实现思路

  1. 读取CSV文件中的日期列
  2. 将字符串格式的日期转换为可计算的日期对象
  3. 计算每个日期与当前日期的差值绝对值
  4. 筛选出差值最小的日期(可选处理差值相同的情况)

代码示例(Python)

假设你的CSV文件包含名为date的日期列,格式为YYYY-MM-DD:

import csv
from datetime import datetime

def find_closest_date(csv_file_path, date_col="date"):
    today = datetime.now().date()
    closest = None
    smallest_gap = None

    with open(csv_file_path, 'r', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            date_str = row[date_col].strip()
            # 根据你的CSV日期格式调整这里的格式字符串
            try:
                date = datetime.strptime(date_str, "%Y-%m-%d").date()
            except ValueError:
                print(f"跳过无效日期格式: {date_str}")
                continue
            
            gap = abs((date - today).days)
            # 更新最接近的日期
            if smallest_gap is None or gap < smallest_gap:
                smallest_gap = gap
                closest = date
            # 可选:当两个日期差值相同时,优先选择未来的日期
            elif gap == smallest_gap:
                if date > today:
                    closest = date
    
    return closest

# 调用示例
if __name__ == "__main__":
    result = find_closest_date("your_dates.csv")
    if result:
        print(f"最接近当前日期的有效日期: {result.strftime('%Y-%m-%d')}")
    else:
        print("未找到有效日期")

关键说明

  • CSV无列名的情况:如果你的CSV没有表头,改用csv.reader,读取时取row[0]作为日期字符串
  • 日期格式适配:如果CSV中的日期是MM/DD/YYYY或其他格式,修改strptime的格式参数(比如"%m/%d/%Y")
  • 时区处理:如果需要考虑时区,使用zoneinfo(Python 3.9+)或pytz库,将当前日期转换为对应时区的日期
  • 差值相同的处理:代码中默认优先选择未来日期,若需要优先过去日期,将date > today改为date < today即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:05:25