计算两个日期之间的时间(以秒为单位)

时间:2018-12-09 15:45:14

标签: python python-2.7

我发现此函数可以计算以秒为单位的时间差。我有一个具有这种时间格式(变量g)的数据库。我转换了它们,所以得到了两种相同的时间格式。但我给了我这个错误:

2018,12,09,15,34,33
2018,12,09,16,42,54
Traceback (most recent call last):
File "test.py", line 12, in <module>
(v-j).total_seconds()
TypeError: unsupported operand type(s) for -: 'str' and 'str'

这段代码有什么问题?

import datetime

g = '2018-12-09 15:34:33'
d = datetime.datetime.strptime(g, '%Y-%m-%d %H:%M:%S')
v = d.strftime('%Y,%m,%d,%H,%M,%S')

j =  datetime.datetime.now().strftime('%Y,%m,%d,%H,%M,%S')

print v
print j

(v-j).total_seconds()

2 个答案:

答案 0 :(得分:0)

使用strftime省略到字符串的转换。

>>> import datetime
>>> 
>>> g = '2018-12-09 15:34:33'
>>> d = datetime.datetime.strptime(g, '%Y-%m-%d %H:%M:%S')
>>> now = datetime.datetime.now()
>>> 
>>> d - now
datetime.timedelta(-1, 81839, 567339)
>>> now - d
datetime.timedelta(0, 4560, 432661)
>>> 
>>> (now - d).total_seconds()
4560.432661

答案 1 :(得分:0)

您需要使用strptime而不是strftime,因为您需要datetime对象而不是字符串,以便在两者之间进行比较并获得差异(以秒为单位)。这是一种实现方法:

import datetime

g = '2018-12-09 15:34:33'
d = datetime.datetime.strptime(g, '%Y-%m-%d %H:%M:%S')

j =  datetime.datetime.now()

print(d)
print(j)

print((d-j).total_seconds())