8

我正在尝试在函数中执行一些日期算术。

from datetime import datetime, timedelta

def foo(date1, summing_period):
    current_period_start_date = date1 - timedelta(days=summing_period)
    # Line above causes the error:
    # TypeError: unsupported type for timedelta days component: datetime.datetime

第一个 arg 是一个日期时间 obj,第二个 arg 是一个整数

是什么导致了这个错误,我该如何解决?

4

2 回答 2

12

summing_period应该是一个整数(代表天数),而不是一个datetime对象。

>>> timedelta(days=datetime.now())
TypeError: unsupported type for timedelta days component: datetime.datetime

>>> timedelta(days=5)
datetime.timedelta(5)
于 2012-07-24T11:07:11.913 回答
1

如果您想在函数上使用 arg,请尝试以下操作:

from datetime import timedelta, datetime

def fromdate(howManyDaysYouWantToBack):
    searchingDate  = datetime.today() - timedelta(days=howManyDaysYouWantToBack)
    timestampSearchingDate = (int(searchingDate.timestamp()))
    return timestampSearchingDate

参数,在这种情况下是 days=float,您需要从代码的某个位置获取此值,例如:

howManyDaysYouWantToBack = float(input("How many days you want to back? "))

您可以使用“float”或“int”,在这两种情况下,此功能都可以使用。

于 2021-11-18T20:46:05.883 回答