如何在python中减去日期时间/时间戳

时间:2015-08-10 21:32:00

标签: python datetime

似乎这应该是如此简单,但对于我的生活,我找不到答案。我从数据库中提取两个日期时间/时间戳:

2015-08-10 19:33:27.653
2015-08-10 19:31:28.209

如何从第二个中减去第一个,最好是以毫秒为单位的结果?是的,我也有约会,因为我需要它在午夜左右工作。

4 个答案:

答案 0 :(得分:16)

将您的字符串解析为datetime.datetime个对象并减去它们:

from datetime import datetime

d1 = datetime.strptime("2015-08-10 19:33:27.653", "%Y-%m-%d %H:%M:%S.%f")
d2 = datetime.strptime("2015-08-10 19:31:28.209", "%Y-%m-%d %H:%M:%S.%f")

print(d1 - d2)

给我:

0:01:59.444000

另请查看timedelta文档以了解所有可能的操作。

答案 1 :(得分:3)

你可以在2个日期时间对象上进行减法以获得差异

>>> import time
>>> import datetime
>>>
>>> earlier = datetime.datetime.now()
>>> time.sleep(10)
>>> now = datetime.datetime.now()
>>>
>>> diff = now - earlier
>>> diff.seconds
10

使用time.strptime

将字符串转换为datetime对象
datetime.strptime("2015-08-10 19:33:27.653", "%Y-%m-%d %H:%M:%S.%f")

答案 2 :(得分:1)

timedelta.seconds不表示timedelta中的总秒数,而是表示模数60的总秒数。

调用函数timedelta.total_seconds()而不是访问timedelta.seconds属性。

答案 3 :(得分:0)

对于python 3.4,首先需要将表示时间的字符串转换为datetime对象,然后datetime模块的有用工具可以处理日期和时间。

from datetime import datetime

def to_datetime_object(date_string, date_format):
    s = datetime.strptime(date_string, date_format)
    return s

time_1 = '2015-08-10 19:33:27'
time_2 = '2015-08-10 19:31:28'
date_format = "%Y-%m-%d %H:%M:%S"
time_1_datetime_object = to_datetime_object(time_1, date_format)
time_2_datetime_object = to_datetime_object(time_2, date_format)

diff_time = time_1_datetime_object - time_2_datetime_object