Как я нахожу различие между временами в различных часовых поясах в Python?

Я пытаюсь вычислить различие (в секундах) между двумя датами/временами, отформатированными как следующее:

11.05.2010 17:07:33 UTC

11.05.2010 17:07:33 EDT

time1 = '2010-05-11 17:07:33 UTC'
time2 = '2010-05-11 17:07:33 EDT'
delta = time.mktime(time.strptime(time1,"%Y-%m-%d %H:%M:%S %Z"))-\
        time.mktime(time.strptime(time2, "%Y-%m-%d %H:%M:%S %Z"))

Проблемой, которую я получил, является EDT, не распознан, определенная ошибка

ValueError: time data '2010-05-11 17:07:33 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z'
5
задан Dolph 13 May 2010 в 17:04
поделиться

3 ответа

Проверьте библиотеку pytz world timezone definitions.

Эта библиотека позволяет точно и кроссплатформенно вычислять часовые пояса, используя Python 2.3 или выше. Она также решает проблему неоднозначного времени в конце перехода на летнее время, о которой вы можете прочитать в справочнике по библиотеке Python (datetime.tzinfo).

Она использует преимущества базы данных tz, которая должна включать EDT, и позволяет выполнять необходимые вычисления (и, вероятно, более надежно и точно, чем ваша текущая реализация).

8
ответ дан 18 December 2019 в 10:42
поделиться

В дополнение к pytz , посмотрите python-dateutil . Функциональность relativedelta выдающаяся.

Вот пример их совместного использования:

from datetime import datetime

from dateutil.relativedelta import *
import pytz

if __name__ == '__main__':
    date_one = datetime.now(pytz.timezone('US/Eastern'))
    date_two = datetime.now(pytz.timezone('US/Mountain'))
    rdelta = relativedelta(date_one, date_two)
    print(rdelta)
8
ответ дан 18 December 2019 в 10:42
поделиться

Из документации для strptime

Поддержка директивы% Z основана на значениях, содержащихся в tzname и истинном дневном свете. Из-за этого он зависит от платформы, за исключением распознавания UTC и GMT, которые всегда известны (и считаются часовыми поясами, не переходящими на летнее время) ).

0
ответ дан 18 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: