我想一個月日期時間添加到我的當前日期時間,如果我這樣做,我只可以轉換日期時間到時間戳,然後添加時間戳空間的便捷方式:尋找添加時間空間
如果是二月份,我會加28 * 24 * 3600
。
如果是31天的太陽月份,我會添加31 * 24 * 3600
。
如果是30天的太陽月份,我會添加30 * 24 * 3600
。
然後再次轉換爲日期時間。
所以,有很多事情要做,python對開發人員來說很舒服,如果有更簡單更方便的方法來做到這一點?
我想一個月日期時間添加到我的當前日期時間,如果我這樣做,我只可以轉換日期時間到時間戳,然後添加時間戳空間的便捷方式:尋找添加時間空間
如果是二月份,我會加28 * 24 * 3600
。
如果是31天的太陽月份,我會添加31 * 24 * 3600
。
如果是30天的太陽月份,我會添加30 * 24 * 3600
。
然後再次轉換爲日期時間。
所以,有很多事情要做,python對開發人員來說很舒服,如果有更簡單更方便的方法來做到這一點?
您可以使用datetime.timedelta
:
from calendar import monthrange
from datetime import timedelta, datetime
def add_month(date):
days_in_month = monthrange(date.year, date.month)[1]
new_date = date + timedelta(days=days_in_month)
return new_date
print(add_month(datetime(2017, 1, 1)))
> 2017-02-01 00:00:00
print(add_month(datetime(2017, 2, 5)))
> 2017-03-05 00:00:00
或者與第三方庫dateutil
:
from datetime import datetime
from dateutil.relativedelta import relativedelta
def add_month(date):
new_date = date + relativedelta(months=1)
return new_date
print(add_month(datetime(2017, 1, 1)))
> 2017-02-01 00:00:00
print(add_month(datetime(2017, 2, 5)))
> 2017-03-05 00:00:00
您可以使用relativedelta:
from datetime import datetime
from dateutil.relativedelta import relativedelta
def addTimeSpace(ori_datetime, relative_date):
day = relativedelta(days=+1)
added_datetime = ori_datetime + relative_date
if ori_datetime.day > added_datetime.day:
added_datetime = added_datetime + day
return added_datetime
print(addTimeSpace(datetime.now(), relativedelta(years=+4, months=+1))) #there will output: 2021-10-26 20:00:53.222794