天天看點

[Python]Python中實作一個時間(日期)型加幾個月的運算

Python的日期時間函數中好像沒有把一個日期(時間)型變量加上幾個月的函數,仿照Delphi中的自己寫了一個。代碼如下:

import calendar

Yearmonth = ((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))   

def addmonths(begindate, months):

    n = begindate.year*12 + begindate.month - 1

    n = n + months

    ryear = n / 12

    rmonth = n%12 + 1

    rday = begindate.day

    if calendar.isleap(ryear):

        if rday > Yearmonth[1][rmonth]:

            rday = Yearmonth[1][rmonth]

    else:

        if rday > Yearmonth[0][rmonth]:

            rday = Yearmonth[0][rmonth]

    return begindate.replace(year=ryear, month=rmonth, day = rday)