Как получить разницу между двумя датами в другом формате ISO? - PullRequest
1 голос
/ 10 февраля 2020

Мне нужно рассчитать разницу между двумя по-разному отформатированными датами 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 ч. Как рассчитать разницу в часах / днях между двумя разными форматами даты?

Я использую Python 3.8.1.

1 Ответ

1 голос
/ 10 февраля 2020

Я использовал 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

Я надеюсь, что это может помочь.

...