gpt4 book ai didi

python - 数月工作时 python 中的 relativedelta

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:00 29 4
gpt4 key购买 nike

假设我在处理几个月的相对增量。

问题是当我这样做的时候:

x = relativedelta(months=12)
x.months
> 0

当我尝试做这样的事情时,这是一个问题:

y = relativedelta(months=12) - relativedelta(months=4)

y
> relativedelta(years=+1, months=-4)

y.months
> -4

我希望月份值为 8 (12 - 4)。任何人都知道如何最好地解决这个问题,以便我可以获得我正在寻找的输出?

最佳答案

relativedelta(months=12)其实就是relativedelta(years=+1),它会自动把月转换成年。例如 months=13 将导致 relativedelta(years=+1, months=+1)

此外,只有当月份低于 -11 或高于 11 时,年才会改变。因此,如果操作后的数量仍在 -11 到 11 之间,则年份不会改变。

解决方案是您需要查看 rdelta.yearsrdelta.months 值以获得您正在寻找的“净月数”。

def total_months(rdelta):
return (rdelta.years * 12) + rdelta.months

您可以将 relativedelta 子类化,使您的使用更加直观。

class reldelta(relativedelta):
@property
def total_months(self):
return (self.years * 12) + self.months

然后

>>> delta = reldelta(years=1) - relativedelta(months=4)
>>> delta
reldelta(years=+1, months=-4)
>>> delta.total_months
8

当然,如果您想将天数考虑在内,这可能会变得困惑,因为一个月中的天数会发生变化。这就是为什么 days 不像 months 那样有界

>>> relativedelta(days=9999)
relativedelta(days=+9999)

关于python - 数月工作时 python 中的 relativedelta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305345/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com