Я использовал 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')
Timedelta -1 дней, а 20 часов означает 4 часа, в действительности, если я перевожу общее количество секунд в часах, которые я получу:
print(difference.total_seconds()//3600)
>> -4
Я надеюсь, что это может помочь.