在Python中确定时区

2 投票
2 回答
1043 浏览
提问于 2025-04-16 03:07

给定一个本地时间戳和一个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

这表示夏令时是生效的。

撰写回答