Как использовать utcoffset временной зоны для конвертации времени?

Время на сервере установлено в UTC. У меня есть список объектов, для которых указан часовой пояс в таком формате: +0300. Есть ли встроенные средства, которые позволят конвертировать время в локальное из UTC, не изобретая велосипед?


Ответы (2 шт):

Автор решения: Hazgan 1

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 Успехов)

→ Ссылка
Автор решения: Roman Konoval

Конвертирование времени с временной зоной в другую заданую сторокой формата +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)
→ Ссылка