4.2.8 时区
在datetime中,时区由tzinfo的子类表示。由于tzinfo是一个抽象基类,实际使用时,应用需要定义它的一个子类,并为一些方法提供适当的实现。
datetime在类timezone中确实包含一个原生实现,该类使用了一个固定的UTC偏移。这个实现不支持一年中不同日期有不同的偏移量,如果有些地方采用夏令时,或者有些地方UTC偏移会随时间改变。
import datetime
min6 = datetime.timezone(datetime.timedelta(hours=-6))
plus6 = datetime.timezone(datetime.timedelta(hours=6))
d = datetime.datetime.now(min6)
print(min6, ':', d)
print(datetime.timezone.utc, ':',
d.astimezone(datetime.timezone.utc))
print(plus6, ':', d.astimezone(plus6))
# Convert to the current system timezone.
d_system = d.astimezone()
print(d_system.tzinfo,' :',d_system)
要把一个datetime值从一个时区转换为另一个时区,可以使用astimezone().在前面的例子找那个,显示了UTC两侧正负6个小时的两个不同时区,另外还使用了由datetime.timezone得到的utc实例来作为参考。最后的输出行显示了系统时区的值,这是不提供任何参数调用astimezone()得到的。
运行结果: