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

如何修改Python的daterange函数使其包含指定结束日期?

解决日期范围输出不包含结束日期的问题

我看了你的代码,问题核心出在daterange函数的循环范围设置上:

当前你的daterange函数里,循环次数是基于两个日期的天数差来生成的:

range(int ((d1 - d).days))

比如你输入的2018-05-07到2018-05-11,两者相差4天,range(4)会生成0、1、2、3这四个数值,对应的日期就是起始日加0到3天,自然就停在了结束日期的前一天。

要让结束日期也被包含进来,只需要把循环的长度加1,让循环多执行一次即可。

修改后的daterange函数

def daterange(d, d1):
    # 在天数差基础上加1,确保包含结束日期
    for n in range(int ((d1 - d).days) + 1):
        yield d + timedelta(n)

现在重新运行代码,输入起始日期2018-05-07、结束日期2018-05-11,输出就会变成:

2018-05-07
2018-05-08
2018-05-09
2018-05-10
2018-05-11

额外小建议

你的代码里直接从数据库查询结果中取date字段,如果数据库中没有对应日期的记录,程序会抛出KeyError。可以加个简单的判断让程序更健壮:

item = collection.find_one({"date" : d})
if not item:
    print(f"日期 {d} 在数据库中不存在")
    exit()
datas = item['date']

item1 = collection.find_one({"date" : d1})
if not item1:
    print(f"日期 {d1} 在数据库中不存在")
    exit()
datas1 = item1['date']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:07:59