2012-02-18 2 views
0

나는 일부는 레스토랑 내 사용 사례가있다파이썬에서 열기 및 닫기 시간을 처리하는 방법은 무엇입니까?

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

처럼 같은 주 하루 2 개 기록이 2 열

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

의 데이터베이스에서이 형식으로 레스토랑의 개폐 시간이 식당이 열려있는 경우 현재 시간을 기준으로 계산 하시겠습니까? 위의 두 시나리오를 어떻게 처리합니까?

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

을 그리고 SQL 쿼리와 같은 것을 수행합니다 :

+0

적절한 평일과 opencol <현재 시간 및 마감 시간> 현재 시간을 선택하십시오. 발견되면 레스토랑이 열립니다. – yak

+1

가능한 [C#의 날짜 작업] (0120-557-003) –

답변

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분 때문에) 그것은 현재 열려 있지.

당연히 여러 값을 비교해야하지만 당연히 반복이 더 복잡해집니다. 샘플 데이터가있을 수 있음을 나타내는 것처럼 여러 날에 걸쳐 가치를 갖는 것이 더 어려울 것입니다. 그러나 사람들은 당신이 기초를 가지고 한 번 알아 내기 매우 어려운 없습니다

주 그것이이 거래 파이썬의 모든.; 대부분의 유스 케이스는 데이터베이스 레벨에서 만족할 수 있어야하지만 몇 가지를 지정해야만 (평일 비즈니스에 대해서는 확신 할 수 없다. 사용중인)은 ...

+0

당신은 분명히 저보다 더 자세히 대답했습니다. 'opening_time asmodai

+0

@asmodai : 나는 그것이 중요하다고 생각하지 않을 것이다. 시간은 밀리 초를 포함합니다. 당신이 원한다면, 당신은 할 수 있습니다. –

+0

@ChrisMorgan strptime은 '24 : 00'형식으로 작동하지 않습니다. – John

0

현재 시간을 가져옵니다 (물론 좋은 기능/방법으로 그것을 포장) 나머지에 따라

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

을 분을 사용해야 할 수도 있지만 제공 한 데이터로는 해당 사례를 단락시킬 수 있습니다.

+0

'strftime'을 사용하는 것은 잘못된 행동입니다. 'd.weekday','d.hour' 및'd.minute'는 여러분이 원하는 값입니다. –

+0

그래, 내가 대답을 보았을 때 번 다시 상기시켰다. 최근 몇 달간 Java와 C#을 많이해야하는 단점. – asmodai

관련 문제