2017-08-30 58 views
2

如何顯示5年5天后:Python編程:從我目前的時間 實例添加年內當前時間

Year : 2017 
newYear: 2022 

怎麼辦呢? 我現在的時間格式如下:

import datetime 
X=datetime.datetime.now() 
print ("year:%s" %x.year) 
+0

您可以調整[這個答案](https://stackoverflow.com/questions/13685201/how-to-add-hours-to-current-time-in-python/13685221#13685221)使用(time = 5,days = 5)'...... –

+0

@JonClements'class datetime.timedelta(days = 0,seconds = 0,microseconds = 0,milliseconds = 0,minutes = 0,hours = 0,weeks = 0)'從文檔https://docs.python.org/3/library/datetime.html#datetime.timedelta。似乎沒有多年的爭論。我認爲你錯了。 – void

+0

@s_vishnu哎呀 - 混淆與dateutil的relativedelta ... –

回答

0

這也許是:

from calendar import isleap 
from datetime import datetime, timedelta 
X=datetime.now() 

day_count = sum(365 + isleap(yr) for yr in range(X.year + 1, X.year + 6)) + 5 

Y = X + timedelta(days=day_count) 

注:timedelta不直接接受years,你必須使用days做到這一點。這不是最好的方法,但可以這樣做。

+2

從未聽說過閏年? –

+0

@brunodesthuilliers我編輯包括閏年 – Eduardo

+2

@Eduardo可以使用'calendar.isleap'而不是在這裏滾動自己的... –

4

這是最簡單的使用第三方dateutilrelativedelta這裏它方便地採用years作爲增量選項,將處理閏年的你,如:

from dateutil.relativedelta import relativedelta 

dt = datetime.now() + relativedelta(years=5, days=5) 
# datetime.datetime(2022, 9, 4, 13, 49, 33, 650299) 
3

或者你可以使用arrow

>>> import arrow 
>>> ar = arrow.utcnow() 
>>> ar.shift(years=5, days=5) 
<Arrow [2022-09-04T12:50:26.609842+00:00]> 
+0

總是忘記箭頭,這是相當不錯的,你可以做'arrow.utcnow()。移(年= 5,天= 5)'直接... –

0

對不起,我遲到了,過去幾天我都很忙。 我的代碼首先將5年添加到當前年份,然後添加5天,如果超過允許的最大值,請確保更改它。 (8月份爲31)但您可以在其他月份擴展它。這只是概念。

import datetime 
X=datetime.datetime.now() 
print ("year:%s" %X.year) 
newY = X.year + 5 
print("new year: %s" %newY) 
newD = X.day + 5 
if X.month == 1 or X.month == 3 or X.month == 5 or X.month == 7 or X.month == 8 or X.month == 10 or X.month == 11 or X.month == 12: 
    # Test if the Month has 31 days 
    if X.day + 5 > 31: 
     op1 = X.day + 5 
     op2 = op1 - 31 
     new = X.month + 1 
     print("month: {}".format(new)) 

newXD = None