Python 在两个日期时间值之间时输出文本

Python 在两个日期时间值之间时输出文本,python,python-3.x,Python,Python 3.x,我正在制定一个计划,确定你在学校的哪个阶段;日程安排在特定的日子会有所不同,因此您只需运行程序,而不必了解您的日程安排 我正在使用“DateTime”导入;但问题是某些课程可能在7:45开始,9:50结束。我编程这两次的方式相互矛盾,因此文本不会显示 以下是代码片段: if sch == "A": if hour >= 7 and min >= 45: if hour <= 9 and min <= 50: print("I

我正在制定一个计划,确定你在学校的哪个阶段;日程安排在特定的日子会有所不同,因此您只需运行程序,而不必了解您的日程安排

我正在使用“DateTime”导入;但问题是某些课程可能在7:45开始,9:50结束。我编程这两次的方式相互矛盾,因此文本不会显示

以下是代码片段:

if sch == "A":
    if hour >= 7 and min >= 45:
        if hour <= 9 and min <= 50:
            print("It is period 1; Class ends at 9:50AM")
如果sch==“A”:
如果小时>=7,分钟>=45:
如果小时用于此任务:

from datetime import datetime

begin = '07:45:00'
end = '09:50:00' # for example
current_time = '10:32:13'

FMT = '%H:%M:%S' # format time

if sch == "A":
    if datetime.strptime(begin, FMT) < \
            datetime.strptime(current_time, FMT) < \
            datetime.strptime(end, FMT):
        print("It is period 1; Class ends at 9:50AM")
从日期时间导入日期时间
开始='07:45:00'
end='09:50:00'#例如
当前时间='10:32:13'
FMT='%H:%M:%S'#格式化时间
如果sch==“A”:
如果datetime.strTime(开始,FMT)<\
datetime.strtime(当前时间,FMT)<\
datetime.strtime(结束,FMT):
打印(“这是第1节课;上午9:50下课”)

正如我所评论的,您的逻辑是关闭的,因为您不允许45-50范围内的时间以外的任何时间,您使用的是日期时间,因此请坚持比较小时和分钟是否在范围内
7:45-9:50

from datetime import time

# cretate a start and end time 
start, end = time(7, 45, 0), time(9, 50, 0)

# pass whatever hour and min are in your code to time
hour_min = time(7, 46)

# check the times falls in the range 7:45-9:50
if  start  <= hour_min <= end:
    print("It is period 1; Class ends at 9:50AM")
从日期时间导入时间
#确定开始和结束时间
开始,结束=时间(7,45,0),时间(9,50,0)
#将代码中的小时和分钟传递给时间
小时分钟=时间(7,46)
#检查时间是否在7:45-9:50范围内
如果开始您可以尝试以下方法:

from datetime import time

if sch == "A":
    if time(hour=7, minute=45) <= time(hour=hour, minute=minute) <=  time(hour=9, minute=45):
        print("It is period 1; Class ends at 9:50AM")
从日期时间导入时间
如果sch==“A”:

如果时间(小时=7,分钟=45)发布了一些预期和实际的输出,我们可以帮助您更多。如果9>=小时>=7和50>=分钟>=45:
但是您的逻辑是错误的,时间可以在7:45和9:500之间,而分钟不在45和50之间,如果您使用的是datetimes,那么只需比较datetimes。虽然没有输出任何内容,但该解决方案没有给出任何错误(假设是因为不是该时间)。。。我想知道是否有任何方法可以“模拟”时间进行测试。你能帮我把你的代码注释一下吗?这样我就可以更明白一点了?我不太熟悉datetime的这种用法。编辑:而且“这是第1节课;上午9:50结束上课”总是出现。对不起,我想我误解了一些事情。@iw0542,完成了,这很简单,我们只需为您要允许的范围使用一个开始时间和结束时间,并检查用户时间是否在该范围内,代码完全按照要求工作,超出范围的任何时间都不意味着您的打印已完成