2017-10-10 46 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

啊我明白了。非常感谢您的建议。我会看看那里发生了什么。如果它是有效的,那么太棒了! –