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'))
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com