我发现此函数可以计算以秒为单位的时间差。我有一个具有这种时间格式(变量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()
答案 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())