我有一个字符串进入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。那么为什么它不起作用?
答案 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。 这可能只是初学者,但似乎是一个更简单的解决方案?