Skip to content

Instantly share code, notes, and snippets.

@DuGites
Created January 26, 2018 00:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DuGites/19a7966f1bb5a5a7eaa1a673f2d46cc1 to your computer and use it in GitHub Desktop.
Save DuGites/19a7966f1bb5a5a7eaa1a673f2d46cc1 to your computer and use it in GitHub Desktop.
Open Hours Checker
"""
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