2

因此,我希望将诸如上午 7:00 之类的输入作为开始时间,并说晚上 10:00 作为结束时间,然后比较一组时间(也是上午 8:00 的形式,3: 00 PM 等)查看这些时间是否在时间范围内。有没有一种好方法可以创建一个具有几个小时范围的“一天”(结束时间可能最晚到凌晨 4:00,所以我想我会从早上 6:00 到早上 5:59 而不是午夜- 晚上 11:59,如果可能的话)我可以检查时间吗?

例如:starttime = 8:00 AM, endtime = 3:00 AM, 和检查time = 7:00 AM将返回时间超出范围。

谢谢!

4

4 回答 4

2

我可能会使用datetime库。在您的输入字符串上使用strptime(),然后您可以datetime直接比较对象。

于 2012-04-11T18:47:38.990 回答
2

使用datetime解析和比较功能:

from datetime import datetime, timedelta

def parse_time(s):
    ''' Parse 12-hours format '''
    return datetime.strptime(s, '%I:%M %p')

starttime = parse_time('8:00 AM')
endtime   = parse_time('3:00 AM')
if endtime < starttime:
   # add 1 day to the end so that it's after start
   endtime += timedelta(days=1)

checked_time = parse_time('7:00 AM')

# Can compare:
print starttime <= checked_time < endtime
于 2012-04-11T18:51:58.077 回答
1

将所有时间转换为 24 小时格式,将分钟和秒作为小时的分数,然后将它们作为数字进行比较,以查看时间是否位于间隔内。

于 2012-04-11T18:42:37.737 回答
1

Python 的 datetime.* 类已经支持比较:

>>> import datetime
>>> datetime.datetime(2012,10,2,10) > datetime.datetime(2012,10,2,11)
False
>>> datetime.datetime(2012,10,2,10) > datetime.datetime(2012,10,2,9)
True

所以你所要做的就是声明一个 TimeRange 类,它有两个成员 startTime 和 endTime。那么“内部”函数可以很简单:

def inside(self, time):
    return self.startTime <= time and time <= self.endTime
于 2012-04-11T18:47:46.620 回答