python日期加减自然月和自然年

import math,datetime
def _add_month_interval (dt,inter):
    m=dt.month+inter-1
    y=dt.year+math.floor(m/12)
    m=m % 12 +1
    return (y,m)

def add_month_interval (dt,inter):
    y,m=_add_month_interval(dt,inter)
    y2,m2=_add_month_interval(dt,inter+1)
    maxD=( datetime.date(y2,m2,1)-datetime.timedelta(days=1) ).day
    d= dt.day<=maxD and dt.day or maxD
    return datetime.date(y,m,d)

def add_year_interval (dt,inter):
    return add_month_interval(dt,inter*12)

Comments