Неподдерживаемые типы операндов для /: 'datetime.timedelta' и 'datedelta' - PullRequest
2 голосов
/ 09 апреля 2019

Я пытаюсь вычислить длительность периода времени, но поскольку одна дата равна timedelta, а другая - datedelta, возникает ошибка:

Unsupported operand type(s) for /: 'datetime.timedelta' and 'datedelta'

Код:

from datetime import timedelta
from datedelta import datedelta
import math

step_period = datedelta(months=1)
to_from = timedelta(weeks=6)
number_of_steps = math.ceil((to_from) / step_period)

NB: datedelta - библиотека Python: ее можно получить с sudo pip3 install datedelta

Возможный ввод:

Мой срок рассмотрения составляет 6 недель (to_from), я хочу разделить его на куски (number_of_steps) по 1 месяцу (step_period). Сколько будет дивизий?

Ожидаемый результат: number_of_steps = 2

Как я могу решить это?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019

Вам необходимо преобразовать в те же единицы и затем выполнить деление: (установив datedelta пакет)

from datetime import timedelta
from datedelta import datedelta
import math

def delta_to_days(delta):
    return delta.days + delta.months * 30

step_period = datedelta(months=1)
to_from = timedelta(days=3)
number_of_steps = math.ceil(delta_to_days(step_period) / to_from.days )
print(number_of_steps)

Вывод:

10
1 голос
/ 09 апреля 2019

Я почти уверен, что timedelta не позволит месяцами = в качестве входа. Я также не мог найти эту датуделта у вас. Вместо этого я мог бы повторить ваш ответ в соответствии с:

In: math.ceil(timedelta(weeks=6)/timedelta(weeks=4))
Out: 2
...