2016-04-12 2 views
0

Мне нужна помощь с моим кодом. Я хочу сравнить в это время между 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) 

Я хочу, чтобы в заявлении, если epg_time_1 показывают время 11:30PM и epg_time_2 показывают время 12:00AM при сравнении с program_stop_time, которые показывают время 11:45PM, так что если epg_time_1 показывают время 12:00AM, который он пришел после того, как program_stop_time время 11:45PM, то я хочу получить в инструкции else.

Не могли бы вы показать мне, как я могу это сделать, используя свой код?

+3

Предполагается, что первая строка должна быть 'half_hour = str (" 11:30 PM ")'? Не AM? –

+1

@gmoshkin [Это не совсем ясно.] (Https://en.wikipedia.org/wiki/12-hour_clock#Confusion_at_noon_and_midnight) –

+0

@BradK. да, вы правы, я использую 'half_hour = str (" 11:30 PM ")', поскольку вы можете видеть, что это PM, а не AM. Можете ли вы показать мне пример того, как я могу использовать оператор с помощью 'if program_stop_time> epg_time_1 и program_stop_time

ответ

0

Проблема в том, что даты, которые вы пытаетесь использовать, происходят через границу «день». Таким образом, вы хотите 11:30PM < 12:00AM < 12:30AM, но так, как вы их указали, они все в тот же день, когда были преобразованы в объекты time или datetime, поэтому 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") 
0

Прежде всего, вы, вероятно, хотите отъ изменения 11:30AM к 11:30PM в вашем коде.

Во-вторых, вы должны использовать datetime объектов, потому что 12:00 AM - это начало дня и 11:30 вечера - это конец дня, и у вас, похоже, возникают проблемы с этим.

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" 

В любом случае решение будет зависеть от данных, которые у вас есть. Если вы можете получить даты, а не просто в качестве вкладов в свою программу, это решение вам понравится.

Смежные вопросы