Как я могу проверить по типу, является ли объект экземпляром pytz.timezone?

#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) работает в обоих случаях