如何使用datetime Python模塊計算從當前日期起六個月的日期?

我正在使用datetime Python模塊。 我想計算從當前日期起6個月的日期。 有人能夠給我一點幫助嗎? app

我要從當前日期起6個月生成日期的緣由是要產生一個審閱日期 。 若是用戶將數據輸入到系統中,則其輸入日期爲6個月。 函數


#1樓

PyQt4的QDate類具備addmonths函數。 ui

>>>from PyQt4.QtCore import QDate  
>>>dt = QDate(2009,12,31)  
>>>required = dt.addMonths(6) 

>>>required
PyQt4.QtCore.QDate(2010, 6, 30)

>>>required.toPyDate()
datetime.date(2010, 6, 30)

#2樓

另外一個解決方案-但願有人會喜歡它: spa

def add_months(d, months):
    return d.replace(year=d.year+months//12).replace(month=(d.month+months)%12)

該解決方案在全部狀況下都沒法正常工做29,30,31天,所以須要更強大的解決方案(如今再也不那麼好了:)): code

def add_months(d, months):
    for i in range(4):
        day = d.day - i
        try:
            return d.replace(day=day).replace(year=d.year+int(months)//12).replace(month=(d.month+int(months))%12)
        except:
            pass
    raise Exception("should not happen")

#3樓

在1new_month = 121的狀況下修改了Johannes Wei的答案。這對我來講很是有效。 月份能夠是正數或負數。 io

def addMonth(d,months=1):
    year, month, day = d.timetuple()[:3]
    new_month = month + months
    return datetime.date(year + ((new_month-1) / 12), (new_month-1) % 12 +1, day)

#4樓

這就是我想出的。 它能夠移動正確的月數和年數,但會忽略天數(這是我當時所須要的)。 import

import datetime

month_dt = 4
today = datetime.date.today()
y,m = today.year, today.month
m += month_dt-1
year_dt = m//12
new_month = m%12
new_date = datetime.date(y+year_dt, new_month+1, 1)

#5樓

我使用此功能更改年份和月份,但保留日期: require

def replace_month_year(date1, year2, month2):
    try:
        date2 = date1.replace(month = month2, year = year2)
    except:
        date2 = datetime.date(year2, month2 + 1, 1) - datetime.timedelta(days=1)
    return date2

您應該寫: date

new_year = my_date.year + (my_date.month + 6) / 12
new_month = (my_date.month + 6) % 12
new_date = replace_month_year(my_date, new_year, new_month)
相關文章
相關標籤/搜索