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)

如果大家有更好的处理方式,欢迎讨论。

你可能感兴趣的:(Python中实现获取两个日期相差的月份数)