[英]comparing the times in a statement
我的代码需要帮助。 我想将11:30PM
和12:00AM
之间的这些时间与program_stop_time
,该时间显示11:45PM
的时间,以查看是否可以进入语句。
当我尝试这个:
if program_stop_time > epg_time_1 and program_stop_time < epg_time_2:
print "Now you are working on resize on the button"
它不会让我发表声明。
这是完整的代码:
half_hour = str("11:30AM")
one_hour = str("12:00AM")
one_hour_half = str("12:30AM")
epg_time_1 = time.strptime(half_hour, '%I:%M%p')
epg_time_2 = time.strptime(one_hour, '%I:%M%p')
epg_time_3 = time.strptime(one_hour_half, '%I:%M%p')
stop_time = str("11:45PM")
program_stop_time = time.strptime(stop_time, '%I:%M%p')
program_stop_clock_list.append(program_stop_time)
if program_stop_time > epg_time_1 and program_stop_time < epg_time_2:
print "Now you are working on resize on the button"
else:
print "Now you are working on to remove the button"
这是epg_time_1
time.struct_time:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=30, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
这是epg_time_2
time.struct_time:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
这是program_stop_time
time.struct_time:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=23, tm_min=45, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
与要显示时间11:45PM
的program_stop_time
相比,如果epg_time_1
显示时间11:30PM
和epg_time_2
显示时间12:00AM
,那么如果epg_time_1
显示时间12:00AM
是在时间之后, program_stop_time
时间11:45PM
然后我要进入else语句。
您能告诉我如何使用我的代码吗?
问题在于您要使用的日期跨越了“天”边界。 因此,您想要11:30PM < 12:00AM < 12:30AM
,但是按照您指定它们的方式,它们在转换为time
或datetime
time
对象时都在同一天,因此12:00AM < 12:30AM < 11:30PM
。 您可以通过转换为datetime
对象并为AM时间添加一天来解决此问题。
import time
from datetime import datetime
from datetime import timedelta
half_hour = str("11:30PM")
one_hour = str("12:00AM")
one_hour_half = str("12:30AM")
epg_time_1 = datetime.strptime(half_hour, '%I:%M%p')
epg_time_2 = datetime.strptime(one_hour, '%I:%M%p')
epg_time_3 = datetime.strptime(one_hour_half, '%I:%M%p')
stop_time = str("11:45PM")
program_stop_time = datetime.strptime(stop_time, '%I:%M%p')
# program_stop_clock_list.append(program_stop_time)
epg_time_2 += timedelta(days=1)
epg_time_3 += timedelta(days=1)
if program_stop_time > epg_time_1 and program_stop_time < epg_time_2:
print("Now you are working on resize on the button")
else:
print("Now you are working on to remove the button")
首先,您可能希望将代码中的11:30AM
更改为11:30PM
。
其次,您应该使用datetime
对象,因为12:00 AM是一天的开始,而11:30 PM是一天的结束,您似乎对此有问题。
import datetime
half_hour = str("1/1/1997 11:30PM")
one_hour = str("2/1/1997 12:00AM")
one_hour_half = str("12:30AM")
epg_time_1 = datetime.datetime.strptime(half_hour, '%d/%m/%Y %I:%M%p')
epg_time_2 = datetime.datetime.strptime(one_hour, '%d/%m/%Y %I:%M%p')
epg_time_3 = datetime.datetime.strptime(one_hour_half, '%d/%m/%Y %I:%M%p')
stop_time = str("1/1/1997 11:45PM")
program_stop_time = datetime.datetime.strptime(stop_time, '%I:%M%p')
if program_stop_time > epg_time_1 and program_stop_time < epg_time_2:
print "program_stop_time is between epg_time_1 and epg_time_2"
else:
print "program_stop_time is NOT between epg_time_1 and epg_time_2"
无论如何,解决方案取决于您拥有的数据。 如果您可以获取日期而不是时间作为程序输入,则此解决方案非常适合您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.