Как использовать utcoffset временной зоны для конвертации времени?
Время на сервере установлено в UTC. У меня есть список объектов, для которых указан часовой пояс в таком формате: +0300. Есть ли встроенные средства, которые позволят конвертировать время в локальное из UTC, не изобретая велосипед?
Ответы (2 шт):
https://docs-python.ru/standart-library/modul-datetime-python/klass-timezone-modulja-datetime/
import datetime
tz = datetime.timezone(offset, name=None)
параметры:
offset - объект datetime.timedelta(), смещение от UTC,
name=None - строка, название часового пояса.
Думаю Вам поможет данная статья о классе timezone() модуля datetime в Python. Также можете спарсить строку в datetime с часовым поясом, как в этой статье https://codecamp.ru/blog/python-date-and-time/
Для python 3.2+
import datetimedt = datetime.datetime.strptime("2016-04-15T08:27:18-0500", "%Y-%m-%dT%H:%M:%S%z")
Для других версий Python можно использовать внешнюю библиотеку, такую как dateutil, которая проанализирует текст в объект datetime.
import dateutil.parserdt = dateutil.parser.parse("2016-04-15T08:27:18-0500")
Теперь переменная dt представляет собой объект datetime со следующим значением:
datetime.datetime(2016, 4, 15, 8, 27, 18, tzinfo=tzoffset(None, -18000))
В целом можете ознакомиться с модулем datetime: https://pythonworld.ru/moduli/modul-datetime.html Успехов)
Конвертирование времени с временной зоной в другую заданую сторокой формата +0300 стандартными средствами делается так:
from datetime import datetime, timezone
dt_to_convert = datetime.utcnow().replace(tzinfo=timezone.utc)
tz = datetime.strptime('+0300', '%z').tzinfo
dt_in_03_tz = dt_to_convert.astimezone(tz)