繁体   English   中英

比较陈述中的时间

[英]comparing the times in a statement

我的代码需要帮助。 我想将11:30PM12: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:45PMprogram_stop_time相比,如果epg_time_1显示时间11:30PMepg_time_2显示时间12:00AM ,那么如果epg_time_1显示时间12:00AM是在时间之后, program_stop_time时间11:45PM然后我要进入else语句。

您能告诉我如何使用我的代码吗?

问题在于您要使用的日期跨越了“天”边界。 因此,您想要11:30PM < 12:00AM < 12:30AM ,但是按照您指定它们的方式,它们在转换为timedatetime 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM