В течение длительного времени я не могу понять, почему объекту tzinfo
нужно передать внешний datetime
для вызова его utcoffset()
, tzname()
методов, которые выглядят в значительной степени независимыми от внешнего времени.
Например, мне нужно вручную создать бесполезный объект даты-времени, чтобы получить имя часового пояса?
from datetime import datetime
from dateutil.tz import gettz
tz = gettz("UTC")
tz.tzname(datetime.now()) # UTC
Глядя на datetime.py
исходный код, реализацию timezone.tzname()
:
def tzname(self, dt):
if isinstance(dt, datetime) or dt is None:
if self._name is None:
return self._name_from_offset(self._offset)
return self._name
raise TypeError("tzname() argument must be a datetime instance"
" or None")
Я не вижу, dt
используется вообще.
Разве tzinfo
не должен знать свое собственное имя, его смещение от UTC?Каким образом свойства часового пояса могут зависеть от внешнего момента времени?Другими словами, почему API разработан таким образом?