在Python中确定时区
给定一个本地时间戳和一个UTC时间戳,能否确定时区以及是否正在实施夏令时?
2 个回答
0
可以看看这个链接: http://docs.python.org/library/datetime.html#datetime.datetime 这里有关于日期、时间和时区的内置支持。
如果你需要更强大的库,可以参考这里的建议: 功能齐全的日期和时间库
3
如果你的“UTC时间戳”是一个浮点数(整数也可以),表示“从纪元开始的秒数”,而你的“本地时间戳”是某种奇怪的版本,已经调整到你所在的本地时间(除了UTC,没有其他的“纪元”),那么Python标准库中的time模块就足够用了。
正如这些文档所示,给定“从纪元开始的秒数”,gmtime
可以把它转换成一个包含9个项目的元组,表示UTC时间;而localtime
则把它转换成一个包含9个项目的元组,表示本地时间。如果要反向操作,可以用calendar.timegm
(把UTC的9个项目元组转换为UTC时间戳)和mktime
(把本地时间的9个项目元组转换为UTC时间戳)。你会注意到,并没有所谓的“本地时间戳”(只有本地时间的9个项目元组,也就是struct_time
实例),因为这个概念并不存在。
不过,如果我理解你所说的“本地时间戳”是正确的,那么把它转换成一个结构时间,仿佛它是一个真实的时间戳,然后再转换回本地时间,就能得到你想要的偏移量(以秒为单位)。至于夏令时,判断它是否生效的一个方法是查看我们提到的元组中的第9个项目。
例如,仅使用“本地时间戳”:
>>> loct
1282453595
>>> time.mktime(time.gmtime(loct)) - loct
28800.0
>>> _ / 3600
8.0
>>>
这表示我在UTC的西边8小时。而:
>>> time.localtime(loct)[-1]
1
这表示夏令时是生效的。