在Python中创建小时范围

在Python中创建小时范围,python,datetime,date,Python,Datetime,Date,因此,我希望输入诸如上午7:00作为开始时间,晚上10:00作为结束时间,然后比较一组时间(也可以是上午8:00、下午3:00等形式),看看这些时间是否在时间范围内。有没有一个好方法可以创建一个有小时范围的“一天”(结束时间可以晚到凌晨4:00,所以我想我应该从早上6:00到早上5:59,而不是午夜到晚上11:59,如果可能的话)来检查时间 例如:starttime=8:00am,endtime=3:00am,检查time=7:00am将返回超出范围的时间 谢谢 将所有时间转换为24小时格式,以

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

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


谢谢

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

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

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

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

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
因此,您所要做的就是声明一个类时间范围,包含两个成员startTime和endTime。然后,“内部”函数可以简单到:

def inside(self, time):
    return self.startTime <= time and time <= self.endTime
def内部(自身、时间):

return self.startTimePython的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
因此,您所要做的就是声明一个类时间范围,包含两个成员startTime和endTime。然后,“内部”函数可以简单到:

def inside(self, time):
    return self.startTime <= time and time <= self.endTime
def内部(自身、时间):
return self.startTime使用解析和比较功能:

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
从datetime导入datetime,timedelta
def解析时间(秒):
''解析12小时格式''
return datetime.strtime(s,“%I:%M%p”)
starttime=parse_时间(上午8:00)
endtime=parse_time('凌晨3:00')
如果endtime
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
从datetime导入datetime,timedelta
def解析时间(秒):
''解析12小时格式''
return datetime.strtime(s,“%I:%M%p”)
starttime=parse_时间(上午8:00)
endtime=parse_time('凌晨3:00')
如果endtime打印starttime实际上,比较比Python中的更容易:
self.starttime实际上,比较比Python中的更容易:
self.starttime谢谢,这应该可以解决我凌晨3:00在上午8:00之后的问题。谢谢,这应该可以解决我凌晨3:00在上午8:00之后的问题。