python:使用时间表间隔的最佳方式:在或之间
python: best way to work with time schedule intervals: in or between
我从 DB json 字段中获取时间表,格式为:
{'monday': '10:00-22:00', 'tuesday': '10:00-22:00', 'wednesday': '10:00-22:00', 'thursday': '10:00-22:00', 'friday': '10:00-22:00', 'saturday': '10:00-22:00', 'sunday': '10:00-22:00'}
真的相信,有一种简单的方法可以检查当前时间是否在时间间隔内,并根据时间表返回结果 TRUE 或 FALSE。
即使我得到了星期几的时间:10:00-22:00,有没有办法检查 13:37 是否在间隔内?
您可以使用日期时间对象。
import datetime
DATA = {'monday': '10:00-22:00', 'tuesday': '10:00-22:00', 'wednesday': '10:00-22:00', 'thursday': '10:00-22:00', 'friday': '10:00-22:00', 'saturday': '10:00-22:00', 'sunday': '10:00-22:00'}
def is_in_time_frame(day, time):
time_frame = DATA[day]
start, end = map(lambda x: datetime.datetime.strptime(x, "%H:%M").time(),
time_frame.split('-'))
return start <= time <= end
print(is_in_time_frame('monday', datetime.time(hour=9, minute=0)))
print(is_in_time_frame('monday', datetime.time(hour=11, minute=0)))
如果你打算经常使用它,你可以实现一个 class TimeInterval,如下所示:
import datetime
DATA = {'monday': '10:00-22:00', 'tuesday': '10:00-22:00', 'wednesday': '10:00-22:00', 'thursday': '10:00-22:00',
'friday': '10:00-22:00', 'saturday': '10:00-22:00', 'sunday': '10:00-22:00'}
class TimeInterval:
def __init__(self, start: datetime.time, end: datetime.time):
self.start = start
self.end = end
def __contains__(self, item: datetime.time):
return self.start <= item <= self.end
def is_in_time_frame(day, time):
time_frame = TimeInterval(*map(lambda x: datetime.datetime.strptime(x, "%H:%M").time(),
DATA[day].split('-')))
return time in time_frame
print(is_in_time_frame('monday', datetime.time(hour=9, minute=0)))
print(is_in_time_frame('monday', datetime.time(hour=11, minute=0)))
我从 DB json 字段中获取时间表,格式为:
{'monday': '10:00-22:00', 'tuesday': '10:00-22:00', 'wednesday': '10:00-22:00', 'thursday': '10:00-22:00', 'friday': '10:00-22:00', 'saturday': '10:00-22:00', 'sunday': '10:00-22:00'}
真的相信,有一种简单的方法可以检查当前时间是否在时间间隔内,并根据时间表返回结果 TRUE 或 FALSE。 即使我得到了星期几的时间:10:00-22:00,有没有办法检查 13:37 是否在间隔内?
您可以使用日期时间对象。
import datetime
DATA = {'monday': '10:00-22:00', 'tuesday': '10:00-22:00', 'wednesday': '10:00-22:00', 'thursday': '10:00-22:00', 'friday': '10:00-22:00', 'saturday': '10:00-22:00', 'sunday': '10:00-22:00'}
def is_in_time_frame(day, time):
time_frame = DATA[day]
start, end = map(lambda x: datetime.datetime.strptime(x, "%H:%M").time(),
time_frame.split('-'))
return start <= time <= end
print(is_in_time_frame('monday', datetime.time(hour=9, minute=0)))
print(is_in_time_frame('monday', datetime.time(hour=11, minute=0)))
如果你打算经常使用它,你可以实现一个 class TimeInterval,如下所示:
import datetime
DATA = {'monday': '10:00-22:00', 'tuesday': '10:00-22:00', 'wednesday': '10:00-22:00', 'thursday': '10:00-22:00',
'friday': '10:00-22:00', 'saturday': '10:00-22:00', 'sunday': '10:00-22:00'}
class TimeInterval:
def __init__(self, start: datetime.time, end: datetime.time):
self.start = start
self.end = end
def __contains__(self, item: datetime.time):
return self.start <= item <= self.end
def is_in_time_frame(day, time):
time_frame = TimeInterval(*map(lambda x: datetime.datetime.strptime(x, "%H:%M").time(),
DATA[day].split('-')))
return time in time_frame
print(is_in_time_frame('monday', datetime.time(hour=9, minute=0)))
print(is_in_time_frame('monday', datetime.time(hour=11, minute=0)))