[英]Python : Calculate difference between dates in months
我正在嘗試使用relativedelta查找兩個日期之間的月份差異。 我可以找到年和天的差異,但是當我篩選月份時,我得到0。 有什么建議么?
from dateutil import relativedelta as rd
import datetime as date
dateformat = '%Y/%m/%d'
startDate = date.strptime('2017/07/01',dateformat).date()
endDate = date.strptime('2019/10/29',dateformat).date()
date_diff = rd.relativedelta(endDate,startDate)
print(date_diff.days)
解決方法如下:
from datetime import datetime
def diff_month(d1, d2):
return (d1.year - d2.year) * 12 + d1.month - d2.month
assert diff_month(datetime(2010,10,1), datetime(2010,9,1)) == 1
assert diff_month(datetime(2010,10,1), datetime(2009,10,1)) == 12
end-start將產生timedelta對象,其days屬性將具有所需的天數差
>>> from datetime import date
>>> start = date(2017,7,1)
>>> end = date(2017,11,11)
>>> (end-start).days
133
relativedelta
將差異顯示為年,月和日。 如果您要查找的是,則不會顯示凈月 。 如果兩個日期恰好在不同年份的同一月,則months
屬性將為零。
如果要顯示總月份,則可以編寫一個小函數,通過添加Years值來為您完成此任務。
from datetime import datetime
from dateutil.relativedelta import relativedelta
def month_delta(start_date, end_date):
delta = relativedelta(end_date, start_date)
# >>> relativedelta(years=+2, months=+3, days=+28)
return 12 * delta.years + delta.months
d1 = datetime(2017, 7, 1)
d2 = datetime(2019, 10, 29)
total_months = month_delta(d1, d2)
print(total_months)
# >>> 27
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.