2012-11-30 52 views
0

我試圖從用戶處獲取日期和小時。從輸入中處理時間的最佳方法

date = raw_input("enter date (example: 25/12/1990) ") 
hour = raw_input("enter hour (example: 20:00) ") 

這就是我如何做到這一點,但我認爲這不是一個很好的實現方法。
輸入後,我想比較輸入的時間與當前時間,以及其他時間。
我打算使用python的time模塊。

你會建議什麼?

+1

你的例子時間不是很好。你的約會也不是。我會建議12/25/1990和14:25的樣本,這樣很顯然它是MM/DD/YYYY,除非你打算相反。當時,這表明你打算使用24小時制。除非你不需要24小時制,否則他們需要指定AM/PM。 – jgritty

+0

@jgritty你是對的。我已經更新了這些。 – Lior

+1

看看'strptime'來處理日期和時間字符串.... –

回答

1

上面給出了一個字符串的日期。您需要將該字符串轉換爲datetime對象,並處理出現的任何錯誤。如果你限制你的用戶簡單日期,那麼你可以做一切與datetime模塊,像這樣:

>>> import datetime 
>>> date = "15/03/2012" 
>>> datetime.datetime.strptime(date, "%d/%m/%Y") 
datetime.datetime(2012, 3, 15, 0, 0) 
>>> hour = "13:01" 
>>> datetime.datetime.strptime(hour, "%H:%M") 
datetime.datetime(1900, 1, 1, 13, 1) 
>>> datetime.datetime.strptime(date + " " + hour, "%d/%m/%Y %H:%M") 
datetime.datetime(2012, 3, 15, 13, 1) 

>>> date = "1/4/2012" 
>>> hour = "3:01" 
>>> datetime.datetime.strptime(date + " " + hour, "%d/%m/%Y %H:%M") 
datetime.datetime(2012, 4, 1, 3, 1) 

您可以使用其他的datetime模塊的代碼做的事情一樣獲取當前日期和時間,或找到差異在兩個日期或時間之間。

+0

謝謝,儘管我必須使用日期模塊,但我理解了strptime的概念,現在我將能夠使用它。 – Lior

+0

沒有'日期'模塊,所以我假設你的意思是你必須使用'時間'模塊。爲什麼?日期時間模塊幾乎肯定是您用例中最好的內置模塊。 –

+0

是的,我的壞。 這是因爲這個練習是練習使用這個模塊。 – Lior

0

一個我所見過的最好的解決方案 - dateutil包,他們分析模塊與parse()功能,試圖從字符串日期/時間。看例子here

+0

謝謝,但我必須使用內置的日期模塊。 – Lior