如何在Python中处理打开和关闭时间?

时间:2012-02-18 09:29:06

标签: python

我在数据库中以2列

打开和关闭这种格式的餐馆
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

我的用例是根据当前时间计算出餐厅是否开放?我如何处理上述两种情况?

2 个答案:

答案 0 :(得分: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中处理所有内容;大多数用例(不太确定工作日业务,虽然快速搜索几个似乎支持它)应该能够在数据库级别满意,但只有你指​​定那个(我的意思是你的数据库) “正在使用”是......

答案 1 :(得分: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];

根据您的其他数据,您可能还需要使用会议记录,但是根据您提供的数据,您可以缩短这种情况。