在Python中创建小时范围

时间:2012-04-11 18:39:47

标签: python datetime date

因此我希望将输入(例如上午7:00作为开始时间),然后说晚上10:00作为结束时间,然后比较一组时间(也以8:00 AM的形式) ,下午3点等,看看那些时间是否在时间范围内。是否有一个很好的方法来创建一个有一个小时范围的“日”(结束时间可以是凌晨4点,所以我想我会从早上6点到凌晨5点59分而不是午夜 - 晚上11:59,如果有可能的话,我可以查看时间吗?

例如:starttime = 8:00 AM, endtime = 3:00 AM,并且检查time = 7:00 AM会使时间超出范围。

谢谢!

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

答案 3 :(得分: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