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

最初の引数は日時オブジェクトで、2番目の引数は整数です

このエラーの原因とその修正方法を教えてください。

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 に答える