首页 文章

datetime模块如何识别本地时区?

提问于
浏览
2

以下代码显示了我一年中每天的当地时间(美国中部时间)和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 回答

  • 0

    看看datetime docs .

    简而言之,datetime和time对象具有可选的timezone属性,tzinfo可以设置为abstract tzinfo类的子类的实例 .

    这些tzinfo对象捕获有关UTC时间偏移量,时区名称以及夏令时是否生效的信息,日期时间模块仅提供一个具体的tzinfo类(时区类) .

    时区类可以表示具有与UTC固定偏移的简单时区,例如UTC本身或北美EST和EDT时区 .

相关问题