在Python 3.9中:
datetime.datetime
尊重tzinfo
,但datetime.time
似乎并不尊重。
import datetime
from zoneinfo import ZoneInfo
dta = datetime.datetime.now(tz=ZoneInfo("America/Los_Angeles"))
dtp = datetime.datetime.now(tz=ZoneInfo("Europe/Paris"))
da10 = datetime.time(10, 0, tzinfo=ZoneInfo("America/Los_Angeles"))
dp10 = datetime.time(10, 0, tzinfo=ZoneInfo("Europe/Paris"))
# datetime.datetime correctly reports tzname and correctly reports
# different time zone aware datetime.datetimes as unequal
>>> dta.tzname()
'PDT'
>>> dtp.tzname()
'CEST'
>>> dta == dtp
False
# datetime.time does not report tzname and incorrectly reports
# different time zone aware datetime.time as equal
>>> da10.tzname()
>>> dp10.tzname()
>>> da10 == dp10
True
datetime.datetime
正确报告 tzname
并正确报告
不同时区感知datetime.datetimes
不平等
datetime.time
不报告 tzname
并且报告错误
不同时区意识datetime.time
同等
与
datetime.datetime
不同,datetime.time
对象不完全了解时区。它仅存储 tzinfo
属性,并且不用于比较或其他方法(如 tzname()
)。