为什么 datetime.time 没有时区?

Why doesn't datetime.time have astimezone?

我正在将 datetime.time 对象的时区转换为不同的时区。看起来最简单的方法是从 datetime.time 对象创建一个 datetime.datetime,然后进行转换。

像这样:

dt = datetime.datetime.combine(datetime.date.today(), self.data)
utc_dt = dt.astimezone(utc)
self.data = utc_dt.time()

为什么 datetime.time 没有像 datetime.datetime 那样的时区?这似乎会让事情变得容易得多。是因为没有日期的时区偏移量可能不明确吗?

时区需要日期,光有时间是不够的。

那是因为:

  1. 您需要能够确定夏令时是否适用。
  2. 您需要知道要应用哪些偏移量。时区不是静态的,它们随着时间的推移而变化,调整 DST 开始和结束日期,以及与 UTC 的偏移量。