[英]Adding months to a date based on a comparison where dateutil.relativedelta is greater than a specified amount of time
我的目标是根据start_date
和end_date
之间的时间段长度将指定的月数添加到start_date
。 超过10年的,加3个月,否则加1个月。 计算必须精确,并且应该能够考虑给定月份以及闰年的特定天数。 我试图通过使用dateutil.relativedelta
来实现这一点, dateutil.relativedelta
所示:
from dateutil.relativedelta import relativedelta
from dateutil import parser
# Extract date from string
start_date = parser.parse("2050-11-01")
end_date = parser.parse("1980-11-01")
# Calculate difference
delta = relativedelta(start_date, end_date)
print(delta)
if delta > relativedelta(years=+10):
new_end_date = start_date + relativedelta(months=3)
else:
new_end_date = start_date + relativedelta(months=1)
print(new_end_date)
但是,这给出了以下输出:
相对增量(年=+70)
类型错误:“relativedelta”和“relativedelta”的实例之间不支持“>”
在 SO 上搜索错误清楚地表明没有简单的方法来比较dateutil.relativedelta
。 有没有人知道我的用例的解决方法?
这是我的建议:
这样,你仍然可以获得相对岬relativedelta
,但你两个硬盘的日期进行比较:
from dateutil.relativedelta import relativedelta
from dateutil import parser
# Extract date from string
start_date = parser.parse("2050-11-01")
end_date = parser.parse("1980-11-01")
# Set the size of the period
period = relativedelta(years=10)
# Test if adding the period to the earliest date makes it surpass the latest date
if min(start_date, end_date) + period <= max(start_date, end_date):
new_end_date = start_date + relativedelta(months=3)
else:
new_end_date = start_date + relativedelta(months=1)
print(new_end_date)
# 2051-02-01 00:00:00
在这种情况下,开始和结束并不意味着更早和更晚,因此您必须执行min
和max
操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.