Как я могу получить часовой пояс из объекта даты Arrow

Мне нужно получить часовой пояс из объекта даты Arrow

Возьмем это для примера:

      import arrow
arrow_date = arrow.get("2000-01-01", tzinfo="America/Toronto")

Как я могу вернуть это tzinfo точно так же, как в приведенном выше коде?

Я пробовал следующее: arrow_date.format("ZZZ") но это возвращает сокращение, которое не сработает в моей ситуации.

2 ответа

Вы можете использовать _filename метод tzinfo:

      import arrow

arrow_date = arrow.get("2000-01-01", tzinfo="America/Toronto")
print(arrow_date.tzinfo._filename)
# Canada/Eastern

см. также Как найти имя часового пояса из tz-файла в python .


Для стандартного объекта datetime библиотеки с tzinfo из zoneinfo, вы можете просто использовать __str__ метод:

      from datetime import datetime
from zoneinfo import ZoneInfo # Python 3.9

dtobj = datetime.fromisoformat("2000-01-01").replace(tzinfo=ZoneInfo("America/Toronto"))
tzinfo = str(dtobj.tzinfo)
print(tzinfo)
# America/Toronto

Недавно мне понадобился только объект tzinfo, и вместо того, чтобы использовать его из dateutil, я использовал стрелку.

Простой пример:

      utc = arrow.now('UTC').tzinfo
nyc = arrow.now('America/New_York').tzinfo

In [27]: nyc
Out[27]: tzfile('/usr/share/zoneinfo/America/New_York')
Другие вопросы по тегам