我的目標是start_date根據start_date和之間的時間段長度向 a 添加指定數量的月份end_date。超過10年的,加3個月,否則加1個月。計算必須精確,并且應該能夠考慮給定月份以及閏年的特定天數。我試圖通過使用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)
但是,這給出了以下輸出:
relativedelta(years= 70) 型別錯誤
:“relativedelta”和“relativedelta”的實體之間不支持“>”
在 SO 上搜索錯誤清楚地表明沒有簡單的方法來比較dateutil.relativedelta。有沒有人知道我的用例的解決方法?
uj5u.com熱心網友回復:
這是我的建議:
- 設定您要測驗的(相對)期限(10 年)
- 將其添加到最早的輸入日期
- 檢查新日期是否早于最新輸入日期
這樣,您仍然可以獲得 的相對性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操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330985.html
標籤:Python 蟒蛇-3.x python-dateutil
上一篇:問題Python-weka-wrapper3與GridSearch
下一篇:在最后一個暗淡處填充多個火炬張量
