给定本地时间戳和UTC时间戳,是否可以确定时区以及DST是否生效?
答案 0 :(得分:2)
如果你的“UTC时间戳”是一个浮点数(int就足够了)“纪元的秒数”,你的“本地时间戳”是一些奇怪的版本转移到你当地的时间坐标(没有“纪元”除了UTC之外),标准Python库中的模块time就足够了。
正如这些文档显示的那样,给定“从纪元开始的秒数”,gmtime
将其转换为UTC中的9项元组,localtime
转换为当地时间的9项元组;反过来,calendar.timegm
(UTC 9项元组到UTC时间戳)和mktime
(本地时间9项元组到UTC时间戳)。你会注意到没有“本地时间戳”(只有当地时间9项元组又名struct_time
个实例),因为没有这样的概念。
但是,如果我理解正确的“本地时间戳”是什么意思,那么将它转换为结构时间“好像”它是一个真正的时间戳,然后回到当地时间,将给出你寻找的偏移量(在秒)。至于DST,有点说明它是否是我们提到的元组的第9项。
例如,仅使用“本地时间戳”:
>>> loct
1282453595
>>> time.mktime(time.gmtime(loct)) - loct
28800.0
>>> _ / 3600
8.0
>>>
这说我在UTC以西8小时。和
>>> time.localtime(loct)[-1]
1
这表示 且DST生效。
答案 1 :(得分:0)
试试看看 http://docs.python.org/library/datetime.html#datetime.datetime 用于内置支持日期,时间和时区。
如果您需要更强大的图书馆,请查看以下建议:Full-featured date and time library