如何获得使用不同ISO格式的两个日期之间的差异?

问题描述 投票:0回答:1

我需要计算2个格式不同的ISO日期之间的差。例如,2019-06-28T05:28:14Z2019-06-28T05:28:14-04:00。这里的大多数答案仅集中于一种或另一种格式,即Z格式。

这是我尝试使用此库iso8601的内容:

import iso8601

date1 = iso8601.parse_date("2019-06-28T05:28:14-04:00")
date2 = iso8601.parse_date("2019-06-28T05:28:14Z")

difference = date2 - date1

>>> datetime.timedelta(days=-1, seconds=75600)

我也曾尝试用Z替换-00:00,但区别相同:

date2 = iso8601.parse_date("2019-06-28T05:28:14Z".replace("Z", "-00:00")

如果我理解正确,应该相差4个小时。如何计算2种不同日期格式之间的小时/天差异?

我正在使用Python 3.8.1。

python python-3.x iso8601 python-iso8601
1个回答
0
投票

我使用过Pandas模块,但我认为与iso8601相同。为了获得正确的区别,我必须在解析函数中指定相同的时区,如下所示:

import pandas as pd
date1 = pd.to_datetime("2019-06-28T05:28:14-04:00",utc=True)
date2 = pd.to_datetime("2019-06-28T05:28:14Z",utc=True)

然后,我的差异以Timedelta格式表示:

difference = (date2 - date1)
print(difference)
>> Timedelta('-1 days +20:00:00')

-1天和20小时的时间差表示4小时,如果我将获得的总秒数转换为小时数,则实际上是这样:

print(difference.total_seconds()//3600)
>> -4

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.