龙空技术网

Python中日期、月份差额(dates_between/months_between)

米高咬笔头 121

前言:

此时同学们对“python字符串日期比较大小”大致比较关切,看官们都需要学习一些“python字符串日期比较大小”的相关内容。那么小编在网上网罗了一些有关“python字符串日期比较大小””的相关资讯,希望姐妹们能喜欢,我们快快来学习一下吧!

from datetime import datetime,date,timedelta

from dateutil.relativedelta import relativedelta

##返回两个日期之间的天数

def dates_between(d1,d2):

return abs((d1-d2).days)

##返回两个月份之间的月数

def months_between(m1,m2):

return abs(m1.year - m2.year)*12 + abs(m1.month - m2.month)

##返回两个日期之间的所有日期字符串(以英文逗号分隔,包含起止日期)

def get_all_dates_between(d1,d2):

ds=''

for i in range(dates_between(datetime.strptime(str(d1),'%Y%m%d'),datetime.strptime(str(d2),'%Y%m%d'))+1):

ds+=(datetime.strptime(str(d1),'%Y%m%d')+timedelta(days=(-i if d1>=d2 else i))).strftime("%Y%m%d")+','

return ds[:-1]

##返回两个月份之间的所有月份字符串(以英文逗号分隔,包含起止月份)

def get_all_months_between(m1,m2):

ms=''

for i in range(months_between(datetime.strptime(str(m1),'%Y%m'),datetime.strptime(str(m2),'%Y%m'))+1):

ms+=(datetime.strptime(str(m1),'%Y%m')+relativedelta(months=(-i if m1>=m2 else i))).strftime("%Y%m")+','

return ms[:-1]

print(months_between(datetime(2021,2,28), datetime(2021,12,1)))

print(months_between(datetime(2021,12,1), datetime(2021,2,28)))

print(dates_between(datetime(2021,5,1), datetime(2021,6,28)))

print(dates_between(datetime(2021,6,28), datetime(2021,5,1)))

print(get_all_months_between('202102','202112'))

print(get_all_months_between('202112','202102'))

print(get_all_dates_between('20210628','20210501'))

print(get_all_dates_between('20210501','20210628'))

标签: #python字符串日期比较大小