我想减去string
类型时间
a = "2017-04-15 21:10:02.026"
b = "2017-10-15 10:09:57.321"
我想要a-b
请有人帮助我谢谢
答案 0 :(得分:2)
您需要先将它们转换为datetime
:
from datetime import datetime
a = "2017-04-15 21:10:02.026"
b = "2017-10-15 10:09:57.321"
dt_a = datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f")
dt_b = datetime.strptime(b, "%Y-%m-%d %H:%M:%S.%f")
print dt_a - dt_b
这将显示:
-183 days, 11:00:04.705000
datetime.strptime()
用于通过指定字符串的格式来将字符串转换为datetime
。每个%
告诉它日期/时间的每个部分在哪里。
在您的情况下,所需的格式如下:
%Y
- 以十进制数字为世纪的年份。
%m
- 月份为零填充十进制数
%d
- 作为零填充十进制数的月中的某一天
%H
- 小时(24小时制)作为零填充十进制数
%M
- 分钟为零填充十进制数
%S
- 第二个作为零填充十进制数
%f
- 微秒数作为十进制数,左边为零填充。
减去两个datetime
对象将返回timedelta
个对象。通过此,您可以确定total_seconds()
。 e.g。
result = dt_a - dt_b
print result.total_seconds()
答案 1 :(得分:0)
根据this,您可以这样做(请参阅链接文档中%
的所有选项:
>>> from datetime import datetime
>>> a = "2017-04-15 21:10:02.026"
>>> b = "2017-10-15 10:09:57.321"
>>> oA = datetime.strptime(a,"%Y-%m-%d %H:%M:%S.%f")
>>> oB = datetime.strptime(b,"%Y-%m-%d %H:%M:%S.%f")
>>> oA - oB
>>> datetime.timedelta(-183, 39604, 705000)
根据this timedelta
应该以这种方式返回(days, seconds, milliseconds)
答案 2 :(得分:0)
使用datetime
如下:
import datetime
if __name__ == "__main__":
a = "2017-04-15 21:10:02.026"
b = "2017-10-15 10:09:57.321"
a_time = datetime.datetime.strptime(a, "%Y-%m-%d %H:%M:%S.%f")
b_time = datetime.datetime.strptime(b, "%Y-%m-%d %H:%M:%S.%f")
print (b_time - a_time).total_seconds()
b_time - a_time
创建一个timedelta
对象,该对象具有多个属性,您可以找到here; total_seconds
以秒为单位返回时差。