2012-02-18 32 views
0

我的餐廳打開和關閉時間以這種格式在數據庫中2列如何在Python中處理開啓和關閉時間?

opencol:00:00 closecol:24:00 weekday:1, 
opencol:23:00,closecol:02:00 weekday:2 etc. 

一些,餐館有2個紀錄在同一周的一天是

opencol:11:00 closecol:14:00 weekday:1 
opencol:16:00 closecol:23:00 weekday:1 

我的使用情況是根據當前時間計算出餐廳是否開放?我如何處理上述兩種情況?

+0

選擇合適的weekday和opencol的行<當前時間和closecol>當前時間?如果找到了,餐廳是開放的。 – yak 2012-02-18 09:34:29

+1

可能的重複[在C#中使用日期](http://stackoverflow.com/questions/9317208/working-with-date-in-c-sharp) – 2012-02-18 09:39:04

回答

3

datetime模塊提供您所需要的一切。

>>> import datetime 
>>> now = datetime.datetime.now() 
>>> now 
datetime.datetime(2012, 2, 18, 20, 38, 53, 271145) 

您可以datetime.datetime.weekday獲取當前工作日。

>>> now.weekday() 
5 

抓取數據庫值並把它們放到datetime.time對象(你的工作應該如何,不會很難搞清楚; strptime可能會是你所需要的)。

一些樣本數據:

>>> opening_time = datetime.time(11, 0, 0, 0) 
>>> closing_time = datetime.time(14, 0, 0, 0) 

然後,比較兩者的時間:

>>> opening_time < now.time() < closing_time 
False 

它目前不開放(因爲它是下午8點38)。

當然,一旦你需要比較多個值,它會變得更加複雜,但這是一個簡單的迭代問題;如果您的樣本數據似乎表明您可能擁有多個天的價值,那麼將會更加困難。但是,一旦你已經掌握了基本知識,這些並不是很難弄清楚。

請注意,這在Python中處理它;大多數用例(不太清楚週日業務,儘管快速搜索至少似乎支持它)應該能夠在數據庫級別得到滿足,但只有當您指定了什麼(我的意思是數據庫,你'使用)是...

+0

你絕對比我回答得更加詳細。 ''opening_time asmodai 2012-02-18 10:04:11

+0

@asmodai:我不認爲它很重要;時間包括毫秒。如果你想,但是,你可以。 – 2012-02-18 10:10:47

+0

@ChrisMorgan strptime無法使用'24:00'格式。 – John 2012-02-18 10:21:58

0

獲取當前時間(把它包起來當然是一個不錯的功能/法):

from datetime import datetime 
d = datetime.now() 
weekday = int(d.strftime("%w")) 
hours = int(d.strftime("%H") 
minutes = int(d.strftime("%M") 

,然後用SQL查詢做這樣的事情:

SELECT * FROM times WHERE restaurant = [id] AND weekday = [weekday] AND opencol <= [hours] AND closecol < [hours]; 

取決於休息的數據,您可能還需要使用分鐘數,但使用您提供的數據可以縮短該情況。

+0

使用'strftime'在這裏是錯誤的; 'd.weekday','d.hour'和'd.minute'是你想要的值。 – 2012-02-18 10:12:30

+0

是的,當我看到你的答案時,再次提醒他們 。最近幾個月需要做大量的Java和C#的缺點。 – asmodai 2012-02-18 11:03:40

相關問題