2013-12-22 31 views
0

我需要通過獲取日期作爲用戶輸入來查找以天爲單位的兩個日期之間的差異。我試圖使用raw_input來獲取日期,但是我收到錯誤。我正在使用2.7版本的python。如何通過獲取日期作爲用戶輸入查找兩天之間的日期差異

import time 
from datetime import date 
day1 = int(raw_input("enter the date in this format (yyyy:mm:dd)") 
day2 = int(raw_input("enter the date in this format (yyyy:mm:dd)") 
diff = day2-day1 
print diff 
+1

閱讀文檔['datetime.strptime()'](http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior) – jfs

回答

1

如果您在表格"yyyy:mm:dd"期待的輸入,你不能簡單地將其轉換爲int

除了strptime,你可以自己解析輸入。

day1 = [int(i) for i in raw_input('...').split(':')] 
d1 = datetime.date(*day1) 
day2 = [int(i) for i in raw_input('...').split(':')] 
d2 = datetime.date(*day2) 
diff = d2 - d1 
print diff.days 

感謝@JF塞巴斯蒂安,使用lambda更簡單的方法定義:

str2date = lambda s: datetime.date(*map(int, s.split(':'))) 

只需撥打:

date = str2date(raw_input('...')) 
+0

我認爲這應該是一個評論。 –

+0

@更新我的代碼。只需一秒鐘。 – Ray

+1

'str2date = lambda s:date(* map(int,s.split(':')))' – jfs

2

你需要這些日期解析成一些更有意義的東西。使用datetime.datetime.strptime()方法:

from datetime import datetime 

day1 = raw_input("enter the date in this format (yyyy:mm:dd)") 
day2 = raw_input("enter the date in this format (yyyy:mm:dd)") 
day1 = datetime.strptime(day1, '%Y:%m:%d').date() 
day2 = datetime.strptime(day2, '%Y:%m:%d').date() 
diff = day2 - day1 
print diff.days 

datetime.datetime.date()方法返回剛剛所得datetime對象的日期部分。

+0

非常感謝它的工作.. – user3126474

相關問題