在Python中如何将字符串转换为日期并检查它是否早于5分钟

时间:2017-05-04 14:20:05

标签: python

我有一个字符串进入5/4/2017 2:13:04 PM 它在utc时区。我需要检查它是否早于5分钟。所以我尝试了以下代码。

statustime="""5/4/2017 2:13:04 PM"""
statustimefrm= datetime.strptime(statustime, "%m/%d/%Y %H:%M:%S %p") 
print "Input time "+str(statustimefrm)
print "Current time "+str(datetime.utcnow())
if statustimefrm < datetime.utcnow() + timedelta(seconds = -300):
    print "disconnected longer than 5 mins"
else:
   print "just disconnected wait"

输出

Input time 2017-05-04 02:13:04
Current time 2017-05-04 14:16:23.147151
disconnected longer than 5 mins

转换时

statustimefrm= datetime.strptime(statustime, "%m/%d/%Y %H:%M:%S %p") 

看起来它没有考虑到PM。在查看文档时,%p代表AM / PM。那么为什么它不起作用?

2 个答案:

答案 0 :(得分:2)

您需要将%H更改为%I

statustimefrm= datetime.strptime(statustime, "%m/%d/%Y %I:%M:%S %p") 

使用strptime %p时,只有在小时字段中使用%I时才会有效。

答案 1 :(得分:0)

如果您只是想检查差异是否更大,并且您正在检查它,比如说,少于每小时,您是否可以检查该字符串中的几个字符?

statustime="""5/4/2017 2:13:04 PM"""

if abs(int(statustime[11:13]))>=5:
    print "disconnected longer than 5 mins"
else:
   print "just disconnected wait"

你需要在那里加上一笔钱,比如statustime-current time。 这可能只是初学者,但似乎是一个更简单的解决方案?