例如,如果我有
test_case1:(9:00 - 16:00)和
test_case2:(21:30 - 4:30)
也就是说,无论第一个数字还是第二个数字大于另一个数字,它都是有效的。
发布于 2017-07-23 20:40:16
如果你将时间填零,你可以使用纯粹的字典序字符串比较-然后你需要做的就是确定第二次是否比第一次“小”,对于这种特殊情况,检查两天,例如:
def is_between(time, time_range):
if time_range[1] < time_range[0]:
return time >= time_range[0] or time <= time_range[1]
return time_range[0] <= time <= time_range[1]
print(is_between("11:00", ("09:00", "16:00"))) # True
print(is_between("17:00", ("09:00", "16:00"))) # False
print(is_between("01:15", ("21:30", "04:30"))) # True这也适用于时间元组(例如(9, 0)),而不是字符串(如果这是你表示时间的方式)。它甚至可以处理大多数time对象。
发布于 2017-07-23 20:29:52
您可以创建datetime.datetime对象并进行比较
>>> start = datetime.datetime(2017, 7, 23, 9, 0)
>>> end = datetime.datetime(2017, 7, 23, 16, 0)
>>> start < datetime.datetime(2017, 7, 23, 11, 0) < end
True
>>> start < datetime.datetime(2017, 7, 23, 18, 0) < end
False如果所有时间都在同一天,您可以简单地创建datetime.time
>>> start = datetime.time(9, 0)
>>> end = datetime.time(16, 0)
>>> start < datetime.time(11, 0) < end
True
>>> start < datetime.time(18, 0) < end
False发布于 2017-07-23 20:32:09
您可以简单地将“time”转换为每天的分钟数:
def minutesPerDay(tme):
hours, minutes = tme.split(':')
return (hours*60)+minutes
def checkTime(tme, tmeRange):
return minutesPerDay(tmeRange[0]) < minutesPerDay(tme) < tmeRange[1]
print(checkTime('11:00', ('09:00', '16:00'))) # True
print(checkTime('17:00', ('09:00', '16:00'))) # Falsehttps://stackoverflow.com/questions/45265044
复制相似问题