2015-12-23 33 views
1

我将datetime.time对象的时区转换为其他时区。看起来最简单的方法是从datetime.time对象创建datetime.datetime,然后执行转换。为什么datetime.time没有astimezone?

像这样:

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

为什么不datetime.time有astimezone像datetime.datetime呢?看起来这会让事情变得更容易。是否因为没有日期,时区偏移可能不明确?

+3

因为时区是日期敏感的。所以“是”。 –

+0

是的。一些时区使用DST,它要求日期与它一起计算精确的偏移量。 –

回答

6

时区需要一个日期,仅有时间是不够的。

这是因为:

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