我需要计算2个格式不同的ISO日期之间的差。例如,2019-06-28T05:28:14Z
和2019-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。
我使用过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
我希望这会有所帮助。