簡體   English   中英

Python:以月為單位計算日期之間的差異

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM