2017-09-22 75 views
-1

我做節目,我輸入開始日期dataStart(例如2000年10月21日),然後輸入intdateEnd,我將其轉換爲其他日期(例如3000 = 0008-02-20) ...現在我需要將這些日期統計在一起,但我沒有管理自己如何做到這一點。這是我的代碼。Python的計數開始日期+天

from datetime import date 

start=str(input("type start date (DD.MM.YYYY)")) 
end=int(input("how many days from it?")) 

dataStart=start.split(".") 

days=int(dataStart[0]) 
months=int(dataStart[1]) 
years=int(dataStart[2]) 

endYears=0 
endMonths=0 
endDays=0 

dateStart = date(years, months, days) 

while end>=365: 
    end-=365 
    endYears+=1 
else: 
    while end>=30: 
     end-=30 
     endMonths+=1 
    else: 
     while end>=1: 
      end-=1 
      endDays+=1 
dateEnd = date(endYears, endMonths, endDays) 
+1

我不確定什麼「現在我需要將這些日期統計在一起」的意思。請給出一個輸入和輸出的例子(以及爲什麼)。 – glibdud

+0

輸入是2個日期,例如輸入1是12.6.1997,並且輸入2(已經轉換爲日期到另一個日期)是2.3.0002 ....並且我希望輸出是14.9.1999 @glibdud –

+0

你'重新立即將你的第二個輸入傳遞給'int()',所以如果你嘗試輸入'「2.3.0002」',你會得到一個'ValueError'。 – glibdud

回答

0

對於加入天爲日期,則需要用戶datetime.timedelta

start=str(input("type start date (DD.MM.YYYY)")) 
end=int(input("how many days from it?")) 

date = datetime.strptime(start, "%d.%m.%Y") 
modified_date = date + timedelta(days=end) 
print(datetime.strftime(modified_date, "%d.%m.%Y")) 
+1

謝謝,現在我設法使用'timedelta'解決了我的問題 –

0

它會更容易使用datetime.datetime.strptime轉換爲datetime和有關添加天只需使用datetime.timedelta的一部分。

下面是關於如何使用它的一小片段:

import datetime 
start = "21.10.2000" 
end = 8 
dateStart = datetime.datetime.strptime(start, "%d.%m.%Y") 
dateEnd = dateStart + datetime.timedelta(days=end) 
dateEnd.date() # to get the date format of the endDate 

如果您有任何疑問,請看看文檔python3/python2

0

您可以使用datetime.timedelta將某些時間單位添加到您的datetime對象中。

看到這裏的答案代碼片斷:Adding 5 days to a date in Python

另外,您可能希望,如果你需要在數週更大的單位時間增加支持使用第三方dateutil庫。例如:

>>> from datetime import datetime 
>>> from dateutil import relativedelta 
>>> one_month_later = datetime(2017, 5, 1) + relativedelta.relativedelta(months=1) 
>>> one_month_later 
>>> datetime.datetime(2017, 6, 1, 0, 0) 
相關問題