在Python中比较两个时间值会返回错误的值

时间:2015-01-06 23:02:31

标签: python

我需要在Python中进行两次比较。

首先我得到当前时间:

current_time = time.strftime("%H:%M:%S")

我从列表中获得了另一个时间值:

another_time =  datetime.strptime(some_list[2],'%H:%M:%S')

我希望在几分钟内得到这两次之间的差异。我试图这样做:

time_now = datetime.strptime(current_time, '%H:%M:%S')
d1 = time.mktime(another_time.timetuple())
d2 = time.mktime(time_now.timetuple())
diff = (d2-d1) / 60

我得到的是:

-1206.0333333

当我打印出另一个时间时,我得到:

1900-01-01 21:07:23

和current_time:

1900-01-01 01:01:21

所以差异应该是238分钟。

这一年的问题是什么(今年到底哪里来了?)?或者我应该在代码中更改什么?

3 个答案:

答案 0 :(得分:0)

我认为这就是你想要做的事情:

from datetime import datetime
from dateutil.parser import parse

l = ['Last', 'ended:', '2015/01/06', '23:38:34', 'UTC']

another_time = parse(l[2] + ' ' + l[3]) # datetime(2015, 1, 6, 23, 38, 34)
current_time = datetime.now()           # datetime(2015, 1, 7,  1,  1, 21)

elapsed = current_time - another_time
elapsed.total_seconds() // 60  # 82 minutes

答案 1 :(得分:0)

我建议转换为Epoch time然后减去

示例:

import time
import datetime
import calendar

current_time = int(time.time())

another_time = calendar.timegm(datetime.datetime(2015,01,8,0,0).utctimetuple())


print(datetime.timedelta(seconds=another_time-current_time))

输出:

1 day, 0:15:50

答案 2 :(得分:0)

如果你得到timedelta - 例如减去两个datetime.datetime对象 - 你可以使用total_seconds()方法,除以60,并转换为整数。

from dateutil.parser import parse 
timeone = parse("10:00 a.m.") #<type 'datetime.datetime'>
timetwo = parse("12:40 p.m.") #<type 'datetime.datetime'>
td = timetwo - timeone # <type 'datetime.timedelta'>
delta_mins = int(td.total_seconds()/60) #outputs 160