2014-07-18 195 views
-2

之間。這裏的天數是給定的兩個日期將打印它們之間的一些時間原型代碼:我想找到兩個日期

from datetime import datetime 
date_format= "%m/%d/%y" 
now=datetime.now() 
print now 
d1=datetime.now() 
d2=datetime.strptime('07/21/14',date_format) 
delta= d2-d1 
print delta 

我想修改此,使得它要求用戶的兩個日期,而不是在源代碼中對日期進行硬編碼。

到目前爲止,我已經寫了:

date1=raw_input("What is date 1 ?:") 
print date1 
date2=raw_input("What is date 2 ?:") 
print date2 
delta=date2-date1 
print delta 

但經過我在日期型,我得到的錯誤:

Traceback (most recent call last): 
    File "C:/Python27/datetimetest.py", line 17, in <module> 
    delta=date2-date1 
TypeError: unsupported operand type(s) for -: 'str' and 'str' 
+0

[詢問用戶輸入的,直到他們得到一個有效的響應]的可能重複(http://stackoverflow.com/questions/23294658/asking-the -user-for-input-until-they-give-a-valid-response) –

+2

你問你如何從命令行讀取兩個日期? –

+3

如果它已解決,請接受給定的答案,如果這是解決方案,或自己添加答案並標記爲已接受。或者沒有寫出評論來說明解決方案。請不要編輯標題說解決(我已經撤消了)。 – TooTone

回答

1

你需要你從raw_input()得到字符串轉換轉換成日期對象。就像你在原始代碼中做的一樣。

from datetime import datetime 

date_format= "%m/%d/%y" 

date1 = raw_input("What is date 1: ") 
date1 = datetime.strptime(date1, date_format) 

date2 = raw_input("What is date 2: ") 
date2 = datetime.strptime(date2, date_format) 

print 
print 'Date 1:', date1 
print 'Date 2:', date2 
print 'Delta: ', date2 - date1 

如果我們運行這個命令:

What is date 1: 3/14/12 
What is date 2: 3/16/12 

Date 1: 2012-03-14 00:00:00 
Date 2: 2012-03-16 00:00:00 
Delta: 2 days, 0:00:00