2017-10-10 69 views
0

我在比較EPG時間和時間方面遇到了問題。當我現在的時間顯示2017-10-10 01:23:00,當我的EPG時間顯示​​這是早上6:00AM和我目前的時間顯示1:23AM,它總是會通過if語句,所以我不知道爲什麼。比較當前時間和epg時間的結果

當我試試這個:

EPG_Time = time.strptime('2017-10-10 01:23AM', '%d/%m/%Y %I:%M%p') 
EPG_Time = datetime.datetime.fromtimestamp(time.mktime(EPG_Time)) 
EPG_Next_time = time.strptime('2017-10-10 06:00AM', '%d-%m-%Y %I:%M%p') 
EPG_Next = datetime.datetime.fromtimestamp(time.mktime(EPG_Next_time)) 

if EPG_Next <= EPG_Time: 
    print "it is time to delete the data from the list..........." 

,那麼肯定會在if語句傳遞時,我的當前時間是EPG時間之後。我想通過if語句,因爲只有當我的當前時間等於或大於EPG時間時,它纔是06:00AM左右,然後我可以從列表中刪除數據。

你能告訴我一個例子,我可以如何比較我現在的時間和EPG時間嗎?

回答

1

首先,strptime()的格式字符串與實際的字符串不一致。我假設這是一個錯字。

其次datetime.datetime包括它自己的strptime()功能,所以你不需要從時間戳轉換:

from datetime import datetime 

EPG_Time = datetime.strptime('2017-10-10 01:23AM', '%Y-%m-%d %I:%M%p') 
EPG_Next = datetime.strptime('2017-10-10 06:00AM', '%Y-%m-%d %I:%M%p') 

if EPG_Next <= EPG_Time: 
    print "it is time to delete the data from the list..........." 

在這種情況下EPG_TimeEPG_Next所以不執行print語句之前。

當前時間可以使用datetime.now()獲得。與此相比,你的EPG時間來確定是否需要執行所需的操作:

if EPG_Next <= datetime.now(): 
    print "it is time to delete the data from the list..........." 
+0

謝謝你,但是當我試試這個:'if if EPG_Next <= datetime.now ():'它給我一個錯誤:'TypeError:不能比較datetime.datetime到元組'。任何想法?? –

+0

你的情況'EPG_Next'不包含'datetime'對象,它可能是'time.mktime(EPG_Next_time)'返回的時間元組。嘗試使用我在答案中顯示的代碼。 – mhawke

0

由於格式化程序的格式不正確,您沒有從分析中獲得好的值。對於這兩種格式化您應該使用

'%Y-%m-%d %I:%M%p' 

比較應該可以正常工作。

+0

應該從我改變' '%d /%M /%Y%I:%M%p''這個'' %Y-%m-%d%I:%M%p'' ?? –

+0

@Daniel是,將這兩個格式化程序更改爲此值:'%Y-%m-%d%I:%M%p'。 '%d-%m-%Y%I:%M%p'(第二個日期格式化程序)也不會提供正確的結果。 – user1442498

+0

啊我明白了。非常感謝您的建議。我會看看那裏發生了什麼。如果它是有效的,那麼太棒了! –