Created
January 26, 2018 00:29
-
-
Save DuGites/19a7966f1bb5a5a7eaa1a673f2d46cc1 to your computer and use it in GitHub Desktop.
Open Hours Checker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Edge cases: | |
1. Empty hours hours = {} | |
2. Some days not having open/close hours or both {"close":{"day":0,"time":""},"open":{"day":0,"time":""}}, | |
3. Some stores might not have hours. | |
4. Some stores might have close hours and not open hours. | |
example: | |
isOpen('store_1') // open | |
isOpen('store_2') // closed | |
isOpen('store_3') // closed | |
isOpen('store_4') // open | |
getOpenStores() // ['store_1', 'store_4'] | |
from datetime import datetime | |
print datetime.now().weekday() # 3 | |
now = datetime.now().time() | |
if time(open_time_hr,open_time_min) <= now.time() <= time(close_time_hour,close_time_min): | |
""" | |
hours = { | |
'store_1': [ | |
{"close":{"day":0,"time":"2200"},"open":{"day":0,"time":"0700"}}, | |
{"close":{"day":1,"time":"2300"},"open":{"day":1,"time":"0800"}}, | |
{"close":{"day":2,"time":"2300"},"open":{"day":2,"time":"0800"}}, | |
{"close":{"day":3,"time":"2300"},"open":{"day":3,"time":"0800"}}, | |
{"close":{"day":4,"time":"2300"},"open":{"day":4,"time":"0800"}}, | |
{"close":{"day":5,"time":"2300"},"open":{"day":5,"time":"0800"}}, | |
{"close":{"day":6,"time":"2200"},"open":{"day":6,"time":"0700"}} | |
], | |
'store_2': [ | |
{"close":{"day":0,"time":"2100"},"open":{"day":0,"time":"1600"}}, | |
{"close":{"day":1,"time":"2100"},"open":{"day":1,"time":"1600"}}, | |
{"close":{"day":2,"time":"2100"},"open":{"day":2,"time":"1600"}}, | |
{"close":{"day":3,"time":"2100"},"open":{"day":3,"time":"1600"}}, | |
{"close":{"day":4,"time":"2100"},"open":{"day":4,"time":"1600"}}, | |
{"close":{"day":5,"time":"2100"},"open":{"day":5,"time":"1600"}}, | |
{"close":{"day":6,"time":"2100"},"open":{"day":6,"time":"1600"}}, | |
], | |
'store_3': [ | |
{"close":{"day":0,"time":"1800"},"open":{"day":0,"time":"0900"}}, | |
{"close":{"day":6,"time":"1800"},"open":{"day":6,"time":"0900"}}, | |
], | |
'store_4': [ | |
{"open":{"day":0,"time":"0000"}}, # open 24 hours | |
], | |
} | |
from datetime import time, datetime | |
def isOpen(store_name): | |
if store_name not in hours: | |
return false | |
store_hours = hours[store_name] | |
day = datetime.now().weekday() | |
for time_epoch in store_hours: | |
close_time, open_time = '','' | |
if time_epoch['open']['day'] == day: | |
open_time = time_epoch['open'] | |
if open_time['time'] == "0000": | |
return "Open" | |
if time_epoch.get('close',None): | |
close_time = time_epoch['close'] | |
if close_time and open_time: | |
current_hr, current_min = int(datetime.now().hour), int(datetime.now().minute) | |
close_time_hr, close_time_min = int(close_time['time'][:2]), int(close_time['time'][2:]) | |
open_time_hr, open_time_min = int(open_time['time'][:2]), int(open_time['time'][2:]) | |
close_tim = time(close_time_hr,close_time_min) | |
open_tim = time(open_time_hr,open_time_min) | |
if open_tim <= datetime.now().time() <= close_tim: | |
return "Open" | |
return "Closed" | |
return "Closed" | |
if __name__ == '__main__': | |
print(isOpen('store_1')) | |
print (isOpen('store_2')) | |
print(isOpen('store_3')) | |
print(isOpen('store_4')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment