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