Преобразование даты и времени UTC с часовым поясом на локальный

У меня есть строка с датой в UTC и tzinfo

"Thu, 01 Oct 2015 00:02:01 +0200" 

Как сделать, чтобы преобразовать его в мое местное время, чтобы он выводил

 "2015-10-02 02:02:01" 

Я пытался

 parser.parse("Thu, 01 Oct 2015 00:02:01 +0200") 

но я не могу найти способ суммировать этот tzinfo со временем, чтобы получить свое местное время.

заранее спасибо

Изменить: вопрос отличается от того, как он включает разницу во времени в данной строке, и точка заключается в добавлении или уменьшении разницы в этом времени, которая иногда требует изменения даты, как в приведенном примере.

2 Solutions collect form web for “Преобразование даты и времени UTC с часовым поясом на локальный”

Вот решение stdlib:

 #!/usr/bin/env python from datetime import datetime from email.utils import parsedate_tz, mktime_tz timestamp = mktime_tz(parsedate_tz("Thu, 01 Oct 2015 00:02:01 +0200")) print(datetime.fromtimestamp(timestamp)) # get local time 

Формат входного времени – формат времени rfc 5322, который понимается модулем email . datetime.fromtimestamp() может не работать для прошлых / будущих дат, если он не использует базу данных хронологического времени на данной платформе. Портативным решением является использование модуля pytz для доступа к базе данных tz:

 #!/usr/bin/env python from datetime import datetime from email.utils import parsedate_tz, mktime_tz import tzlocal # $ pip install tzlocal local_timezone = tzlocal.get_localzone() # return pytz tzinfo timestamp = mktime_tz(parsedate_tz("Thu, 01 Oct 2015 00:02:01 +0200")) print(datetime.fromtimestamp(timestamp, local_timezone)) 

Я думаю, что следующее делает то, что вы хотите, реализуя пару конкретных классов tzinfo :

 from datetime import datetime, timedelta, tzinfo import time as _time _ZERO = timedelta(0) _STDOFFSET = timedelta(seconds=-_time.timezone) if _time.daylight: _DSTOFFSET = timedelta(seconds=-_time.altzone) else: _DSTOFFSET = _STDOFFSET _DSTDIFF = _DSTOFFSET - _STDOFFSET class UTC(tzinfo): """ Concrete tzinfo time zone class for UTC """ def utcoffset(self, dt): return _ZERO def tzname(self, dt): return "UTC" def dst(self, dt): return _ZERO UTC = UTC() class LocalTimezone(tzinfo): """ Concrete tzinfo time zone class for current timezone """ def utcoffset(self, dt): if self._isdst(dt): return _DSTOFFSET else: return _STDOFFSET def dst(self, dt): if self._isdst(dt): return _DSTDIFF else: return _ZERO def tzname(self, dt): return _time.tzname[self._isdst(dt)] # everything depends on this private method which assumes 'dt' argument # is in local time def _isdst(self, dt): tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1) # last -1 means dst unknown (mktime will fill in) stamp = _time.mktime(tt) # mktime returns secs tt = _time.localtime(stamp) # localtime returns time_struct with tm_isdst attribute return tt.tm_isdst > 0 LOCAL = LocalTimezone() stamp = 'Thu, 01 Oct 2015 00:02:01 +0200' dt = datetime(*_time.strptime(' '.join(stamp.split()[:-1]), '%a, %d %b %Y %H:%M:%S')[:6], tzinfo=UTC) local_dt = dt.astimezone(LOCAL) print(local_dt.strftime('%Y-%M-%d %H:%M:%S')) 
  • Как полностью удалить любой журнал из модуля запросов в Python
  • Как правильно установить AUTO INCREMENT для столбца в SQLite, используя Python?
  • Python Сохранить в файл
  • Edgelines исчезают в mplot3d surf, когда указаны цветные
  • Unpickling python2 datetime под python3
  • Как использовать conda для создания отдельных сред python, каждый из которых имеет разные $ PYTHONPATH
  • Команда Subprocess не возвращает
  • Python: help (numpy) вызывает segfault при выходе
  •  
    Interesting Posts for Van-Lav

    Разное поведение в сценарии python и python простаивает?

    Тестирование эквивалентности xml.etree.ElementTree

    движок Google; загрузка в blobstore дает ошибку 404

    Как назначить и использовать заголовки столбцов в Spark?

    Производительность: асинхронный обработчик запросов с задачами блокировки, выполняемыми пулом работников

    Потоки Python, потоки не закрываются

    Как установить Buildozer на Ubuntu 13.10 для создания Android APK приложения Kivy?

    Какие проблемы (если они есть) были бы объединены asyncio с многопроцессорной обработкой?

    Python: добавить список для установки?

    Как сделать поверхность с прозрачным фоном в pygame

    Python, как читать N количество строк за раз

    Невозможно импортировать флажок при использовании Google App Engine

    Загрузка и разбор файла JSON с несколькими объектами JSON в Python

    Используйте строку формата Python в обратном порядке для синтаксического анализа

    Пересечение двух списков диапазонов в Python

    Python - лучший язык программирования в мире.