[英]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.