2016-04-12 18 views
0

私のコードで助けが必要です。私は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=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1) 

は次のとおりです。

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ですprogram_stop_time time.struct_time:

epg_time_1は時間 12:00AMを示した場合、それは program_stop_time後に来たので、私は epg_time_1は時間 11:30PMepg_time_2を示す場合文で取得したい
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と比較時間12:00AMを表示時間は11:45PMだから、私はelseステートメントに入りたい。

私のコードを使って、どうすればいいのですか?

+3

最初の行は 'half_hour = str(" 11:30 PM ")'になっていますか?午前じゃない? –

+1

@gmoshkin [それは完全にはっきりしていない](https://en.wikipedia.org/wiki/12-hour_clock#Confusion_at_noon_and_midnight) –

+0

@ブラッド。はい、あなたは正しいです、私は半分時間= str( "11:30 PM") 'を使用しています。あなたは '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時間に1日追加することで、この問題を回避できます。すべての

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:30PMにOT変更11:30AMをしたいです。

第2に、午前12時が冒頭で、午後11時30分が終わりであり、その問題が発生しているように見えるので、datetimeオブジェクトを使用する必要があります。

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" 

とにかく解決方法は、データによって異なります。あなたのプログラムへの入力としてちょうど時間の代わりに日付を得ることができれば、このソリューションはあなたをかなり良いものにします。