以下代码显示了我一年中每天的当地时间(美国中部时间)和UTC之间的差异:
import datetime
startTs = 1293808443
intvl = 24 * 3600
for day in range(365):
ts = startTs + day * intvl
localTs = datetime.datetime.fromtimestamp(ts)
utcTs = datetime.datetime.utcfromtimestamp(ts)
print("%s\t%s" % (utcTs.strftime("%Y-%m-%d %H:%M:%S"), (utcTs - localTs)))
结果:
2010-12-31 15:14:03 6:00:00
2011-01-01 15:14:03 6:00:00
...
2011-03-11 15:14:03 6:00:00
2011-03-12 15:14:03 6:00:00
2011-03-13 15:14:03 5:00:00
2011-03-14 15:14:03 5:00:00
...
2011-11-04 15:14:03 5:00:00
2011-11-05 15:14:03 5:00:00
2011-11-06 15:14:03 6:00:00
2011-11-07 15:14:03 6:00:00
...
2011-12-29 15:14:03 6:00:00
2011-12-30 15:14:03 6:00:00
如果没有指定任何时区信息,datetime模块似乎不仅知道我的本地时区和UTC之间的时差,而且还知道夏令时开始和结束的时间差 . 这似乎与类似的问题相矛盾 . 我的结论是否错误?如果没有,我如何从OS / datetime模块获取此时区信息?
1 回答
看看datetime docs .
简而言之,datetime和time对象具有可选的timezone属性,tzinfo可以设置为abstract tzinfo类的子类的实例 .
这些tzinfo对象捕获有关UTC时间偏移量,时区名称以及夏令时是否生效的信息,日期时间模块仅提供一个具体的tzinfo类(时区类) .
时区类可以表示具有与UTC固定偏移的简单时区,例如UTC本身或北美EST和EDT时区 .