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)
如果大家有更好的處理方式,歡迎討論。