#python #datetime #timezone #pytz
#python #дата и время #Часовой пояс #pytz
Вопрос:
Я хочу что-то вроде этого:
from datetime import datetime, timezone
import pytz
def convert_datetime_by_timezone(timestamp_dt, to_timezone):
if isinstance(to_timezone, str):
return timestamp_dt.astimezone(pytz.timezone(to_timezone))
elif isinstance(to_timezone, pytz.tzinfo.??????):
return timestamp_dt.astimezone(to_timezone)
else:
raise Exception("Invalid timezone: '%s'" % str(to_timezone))
Но каждый раз, когда я создаю часовой пояс pytz, создается объект нового типа:
>>> type(pytz.timezone("UTC"))
<class 'pytz.UTC'>
>>> type(pytz.timezone("Europe/Budapest"))
<class 'pytz.tzfile.Europe/Budapest'>
Каков правильный способ проверить это?
Комментарии:
1. Найдите родительский элемент, например
BaseTzInfo
.2. Спасибо!
isinstance(x, pytz.BaseTzInfo)
работает в обоих случаях.3. @elaspog спасибо! пожалуйста, оставьте свой комментарий в качестве ответа на ваш вопрос, чтобы я мог проголосовать за его полезность 🙂
Ответ №1:
isinstance(x, pytz.BaseTzInfo)
работает в обоих случаях