from datetime import datetime
def month_add(input_date, months):
import calendar
End_day = ((0,31,28,31,30,31,30,31,31,30,31,30,31),(0,31,29,31,30,31,30,31,31,30,31,30,31))#存储闰年及非闰年每月的最大日期
m = input_date.year*12 + input_date.month - 1+months#以月为单位设定月基数
rpyear = int(m/12)#判断月基数对应的年份
rpmonth = m%12 + 1 #n除以12取余,判断月份
rpday = input_date.day
if calendar.isleap(rpyear):#判断是否闰年,用于判断日期是否超出范围
if rpday > End_day[1][rpmonth]:
rpday = End_day[1][rpmonth]
else:
if rpday > End_day[0][rpmonth]:
rpday = End_day[0][rpmonth]
return input_date.replace(year=rpyear, month=rpmonth, day = rpday)#返回日期