Python /:';datetime.timedelta';和';datedelta';

Python /:';datetime.timedelta';和';datedelta';,python,datetime,timedelta,Python,Datetime,Timedelta,我正在尝试计算时间段长度,但由于一个日期是timedelta,另一个是datedelta,因此会引发以下错误: 不支持的操作数类型/:“datetime.timedelta”和“datedelta” 代码: 注意:datedelta是一个Python库:可以通过sudopip3安装datedelta 可能的投入: 我考虑的时间是6个星期( >从< /代码>),我希望把它分为1个月的“块”(编号步骤< /代码>)(步骤周期>代码>)。有多少个师 预期产出: 步数=2 我如何解决这个问题?我很确定t

我正在尝试计算时间段长度,但由于一个日期是
timedelta
,另一个是
datedelta
,因此会引发以下错误:

不支持的操作数类型/:“datetime.timedelta”和“datedelta”

代码:

注意:
datedelta
是一个Python库:可以通过
sudopip3安装datedelta

可能的投入:

<>我考虑的时间是6个星期(<代码> >从< /代码>),我希望把它分为1个月的“块”(<代码>编号步骤< /代码>)(<代码>步骤周期>代码>)。有多少个师

预期产出:
步数=2


我如何解决这个问题?

我很确定timedelta在几个月内不允许将=作为输入。我也找不到你的这个datedelta。相反,我可以复制您的答案,如下所示:

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

您需要转换为相同的单位,然后进行除法: (已安装
datedelta
软件包)

输出:

10

您到底想做什么?步骤的
数量应该是从
日期开始的
的偶数,长度为
步骤周期。例如,此处考虑的时间长度为3天,但应分为一个月(我知道这是不可能的,我只是为了测试目的插入了随机值)请使用一些样本输入和输出数据更新您的问题。数学上合理的示例是3天,时间长度=1个月,步骤数将等于十。请使用一些示例输入和输出数据更新您的问题。这在本例中有效,但随着时间的推移,此项目将扩展到年,并且计算周数(最高的
时间增量除法
)效率不高
datedelta
是一个类似的库,它允许更长的周期,如月和年,您可以通过
sudo pip3安装datedelta
获得它。为什么您不能只让您的to_from=datedelta(weeks=6)?datedelta中不包括周,抛出此错误:
得到了一个意外的关键字参数“weeks”
啊,我明白了,我想如果你总是想分为1个月,你可以使用datedelta函数中的天,否则创建一些转换函数,如quamrana,可能是你最好的选择。几乎。。。这有点倒退,但我可以用你的答案做一个工作示例:你将除法
(to_from.days)/delta_to_days(step_period)
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