【问题标题】:datetime.datetime + timedelta(days=5) is returning Nonedatetime.datetime + timedelta(days=5) 返回 None
【发布时间】:2021-03-06 04:59:39
【问题描述】:
startdate = dt.strptime('13/12/2020', '%d/%m/%Y')
enddate = dt.strptime('4/12/2020', '%d/%m/%Y')
interval = 5
print('startdate', startdate)
print('enddate', enddate)

loop_startdate = startdate
loop_endate = None

for _ in range((diff//interval) + 1):
    print(_, loop_startdate)
    loop_enddate = loop_startdate + timedelta(days=interval)
    print('loop_enddate', loop_endate)
    if loop_enddate > enddate:
        loop_enddate = enddate
    loop_startdate = loop_endate

startdateenddatedatetime.datetime 实例。我已经打印出'startdate'和enddate,结果如下。

startdate 2020-12-04 00:00:00
enddate 2020-12-13 00:00:00
0 2020-12-04 00:00:00
loop_enddate None
1 None
Traceback (most recent call last):

  File "pythonfilepathhere", line 81, in <module>
    loop_enddate = loop_startdate + timedelta(days=interval)

TypeError: unsupported operand type(s) for +: 'NoneType' and 'datetime.timedelta'

我已仔细检查以确保 startdateendate 属于 datetime.datetime 类型。我实际上需要它作为日期而不是日期时间。我也尝试使用loop_startdate.date() + timedelta(),但它也返回无。

我不明白为什么 datetime.datetime + timedelta() 会返回 None。我的 Python 版本是3.6.5

【问题讨论】:

    标签: python date datetime nonetype timedelta


    【解决方案1】:

    似乎是一个小错字。

    print('loop_enddate', loop_endate) 更改为print('loop_enddate', loop_enddate)

    另外,将loop_startdate = loop_endate 更改为loop_startdate = loop_enddate

    【讨论】:

    • @Jihjohn 解决问题了吗?
    • 嗨乔希。它确实解决了这个问题。我无法消化我刚刚提出了一个错字的 SO 问题。我一起调试和编写几个文件,并没有太在意。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2023-02-19
    • 1970-01-01
    • 2022-11-21
    相关资源
    最近更新 更多