Ошибка типа: требуется целое число (полученный тип кортеж) datetime Python - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь получить дни между двумя датами. Вот мой код:

from datetime import date, timedelta
def days_diff(a, b):
    f = date(a)
    s = date(b)
    return abs(f-s)
print(days_diff((2014, 8, 27), (2014, 1, 1)))

Но я получаю эту ошибку:

TypeError: an integer is required (got type tuple)

Интересно, почему? Я импортировал дату и время. Может кто-нибудь, пожалуйста, помогите? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вы столкнулись с ошибкой, потому что вы передали кортеж date(), который принимает значения, но не кортеж.
Попробуйте это:

def days_diff(a, b):
    f = date(*a)
    s = date(*b)
    print(f,s)
    return abs(f-s)

Теперь вызовите его:

print(days_diff((2014, 8, 27), (2014, 1, 1)))

Это даст вам:

2014-08-27 2014-01-01
238 days, 0:00:00

* извлекает значение переданного кортежа (распакуйте кортеж).


Чтобы получить одни дни, используйте .days:

return print(abs(f-s).days)
0 голосов
/ 13 апреля 2020

Вам нужно передать 3 параметра date(), а не tuple. Вы можете распаковать кортежи в вашей функции с помощью:

f = date(*a)
s = date(*b)
...