如何将timedelta对象转换为datetime对象

时间:2010-03-09 23:22:45

标签: python datetime timedelta

将timedelta对象转换为日期时间对象的正确方法是什么?

我立即想到像datetime(0)+deltaObj这样的东西,但那不是很好......是不是有toDateTime()函数或类似的东西?

3 个答案:

答案 0 :(得分:31)

将timedelta转换为日期时间是没有意义的,但选择一个初始或开始日期时间并从中添加或减去timedelta是有意义的。

>>> import datetime
>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2010, 3, 9, 18, 25, 19, 474362)
>>> today + datetime.timedelta(days=1)
datetime.datetime(2010, 3, 10, 18, 25, 19, 474362)

答案 1 :(得分:0)

我发现我可以使用.total_seconds()并将其用于创建新的时间对象(或日期时间对象,如果需要)。

import time
import datetime

start_dt_obj = datetime.datetime.fromtimestamp(start_timestamp)
stop_dt_obj = datetime.datetime.fromtimestamp(stop_timestamp)
delta = stop_dt_obj - start_dt_obj

delta_as_time_obj = time.gmtime(delta.total_seconds())

这使您可以执行以下操作:

print('The duration was {0}'.format(
    time.strftime('%H:%M', delta_as_time_obj)
)

答案 2 :(得分:0)

由于日期时间表示一天中的时间,因此即使时间增量不受此约束,您的时间增量也应少于24小时(86400秒)。

import datetime

seconds = 86399
td = datetime.timedelta(seconds=seconds)
print(td)
dt = datetime.datetime.strptime(str(td), "%H:%M:%S")
print(dt)

23:59:59
1900-01-01 23:59:59

如果您不希望使用默认日期,并且知道时间增量的日期,则:

date = "05/15/2020"
dt2 = datetime.datetime.strptime("{} {}".format(date, td), "%m/%d/%Y %H:%M:%S")
print(dt2)

2020-05-15 23:59:59