Python 中實現獲取兩個日期相差的月份數

Python 中處理日期時間的標準庫有time、datetime、calendar ,但是這三個庫都沒有獲取兩個日期相差多少個月的函數,如果用datetime中的strptime()直接進行兩個日期相減,返回值的最大單位是天,如下代碼所示:

interval=datetime.strptime('201907','%Y%m') - datetime.strptime('201901','%Y%m')
print(interval)  # 181 days, 0:00:00

而實際使用場景中需要直接獲取相差的月份數,可以用以下方式計算實現:

from datetime import datetime

v_end_date='201907'
v_start_date='201901'
v_year_end=datetime.strptime(v_end_date, '%Y%m').year
v_month_end=datetime.strptime(v_end_date, '%Y%m').month
v_year_start=datetime.strptime(v_start_date, '%Y%m').year
v_month_start=datetime.strptime(v_start_date, '%Y%m').month
interval=(v_year_end - v_year_start)12 + (v_month_end - v_month_start)
print(interval)  # 6

獲取結果無誤,實際需要可封裝爲函數。
若需打印間隔的兩段日期中的每個時間段,可增加如下代碼:

for i in range(0, interval + 1):
    v_month_tmp=(v_month_start + i) % 12
    v_year_tmp=v_year_start + (v_month_start + i) // 12
    if v_month_tmp == 0:
        v_month_tmp = 12
        v_year_tmp -= 1
    v_interval_date_tmp=datetime.strptime(str(v_year_tmp) + str(v_month_tmp), '%Y%m')
    v_interval_date=int(datetime.strftime(v_interval_date_tmp), '%Y%m')
    print(v_interval_date)

如果大家有更好的處理方式,歡迎討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章