首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中检查时间介于两个时间之间

问如何在python中检查时间介于两个时间之间
EN

Stack Overflow用户
提问于 2017-07-23 20:23:41
回答 3查看 12.7K关注 0票数 2

例如,如果我有

test_case1:(9:00 - 16:00)和

test_case2:(21:30 - 4:30)

也就是说,无论第一个数字还是第二个数字大于另一个数字,它都是有效的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-23 20:40:16

如果你将时间填零,你可以使用纯粹的字典序字符串比较-然后你需要做的就是确定第二次是否比第一次“小”,对于这种特殊情况,检查两天,例如:

代码语言:javascript
复制
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对象。

票数 12
EN

Stack Overflow用户

发布于 2017-07-23 20:29:52

您可以创建datetime.datetime对象并进行比较

代码语言:javascript
复制
>>> 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

代码语言:javascript
复制
>>> start = datetime.time(9, 0)
>>> end = datetime.time(16, 0) 
>>> start < datetime.time(11, 0) < end
True
>>> start < datetime.time(18, 0) < end
False
票数 2
EN

Stack Overflow用户

发布于 2017-07-23 20:32:09

您可以简单地将“time”转换为每天的分钟数:

代码语言:javascript
复制
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')))  # False
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45265044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档