【发布时间】:2021-05-27 13:19:43
【问题描述】:
我想知道为什么我没有从 datetime.timedelta 中得到负小时和负秒?
我有以下方法
def time_diff(external_datetime, internal_datetime):
from pandas.core.indexes.period import parse_time_string # include for completeness
time_external = parse_time_string(external_datetime)[0]
time_internal = parse_time_string(internal_datetime)[0]
diff = time_external - time_internal
return diff
当日期时间看起来像这样时,一切都符合预期;
external_datetime = "2020-01-01T00:00:00"
internal_datetime = "2020-01-02T00:00:00"
返回的是 -1 天的 datetime.timedelta (datetime.timedelta(days=-1))
为什么当我把时间改为;
external_datetime = "2020-01-01T00:00:00"
internal_datetime = "2020-01-01T01:30:00"
我会得到datetime.timedelta(days=-1, seconds=81000) 的差异
我确实想知道这是不是因为“接近”午夜,但是
external_datetime = "2020-01-01T11:00:00"
internal_datetime = "2020-01-01T11:30:00"
结果为@987654329@
版本
- python 3.8.2
- 熊猫 1.1.4
【问题讨论】:
-
为什么?因为 timedelta 类的
__str__方法是这样编码的?您仍然可以为 timedelta 编写自己的“strftime”,请参阅 Format timedelta to string 以获得灵感。 -
顺便说一句。据我所知,这里与熊猫有什么关系,您的问题是特定于 Python 的
datetime.timedelta的(尽管这与熊猫的 timedelta 没有什么不同)。 -
@MrFuppes 我包括了熊猫,因为它是包含
parse_time_string的熊猫,我不确定它是否会产生(小)差异。为添加另一个标签欢呼。 -
别担心,附带说明:您拥有的格式是不错的 ISO 8601,因此您可以使用 datetime.fromisoformat 方便地解析。
标签: python pandas datetime timedelta