如何在python中加上日期时间?

How to plus datetime in python?

我有一个程序可以生成如下几种格式的日期时间。

1 day, 21:21:00.561566
11:19:26.056148

也许它有月或年格式,我想知道有什么方法可以加上我从程序中得到的所有时间。

您可以像这里一样减去日期时间来计算这两个时间相差多远:

添加两个日期并没有任何意义。例如,如果您尝试将 2020 年 1 月 1 日添加到 1995 年 1 月 1 日,您期望什么?

您可以使用 datatime.timedelta class 来达到这个目的。
您可以找到文档 here.
您将需要解析您的字符串并构建一个 timedelta 对象。

- 1 day, 21:21:00.561566datetime.timedelta 对象的字符串表示形式。如果你需要从字符串解析为timedelta,pandas有一个合适的方法。还有其他第三方解析器;我只使用这个,因为 pandas 很常见。

import pandas as pd
td = pd.to_timedelta('- 11:19:26.056148')
# Timedelta('-1 days +12:40:33.943852')
td.total_seconds()
# -40766.056148

如果您需要找到多个时间增量值的总和,您可以 sum 将它们的 total_seconds 转换回 timedelta:

td_strings = ['- 1 day, 21:21:00.561566', '- 11:19:26.056148']
td_sum = pd.Timedelta(seconds=sum([pd.to_timedelta(s).total_seconds() for s in td_strings]))
td_sum
# Timedelta('-1 days +10:01:34.505418')

...或利用 Python 标准库中的一些工具:

from functools import reduce
from operator import add
td_sum = reduce(add, map(pd.to_timedelta, td_strings))
# Timedelta('-1 days +10:01:34.505418')
td_sum.total_seconds()
# -50305.494582