【发布时间】:2018-05-29 10:08:18
【问题描述】:
很长一段时间,我不明白为什么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 是这样设计的?
【问题讨论】: