2010-08-22 16 views

回答

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

问题出在这里:我有一个UTC时间戳,它代表任意时间任意日期的00:00:00。我知道那个任意日期是什么,但我不知道时区。如果我将时间戳转换为日期时间对象,我可以使用小时值来确定时区,但问题在于DST。如果DST生效,则时区将偏移一个。不过,我相信这个时区在美国将是一个时区。无论如何,我找到了解决问题的办法(虽然不是一个干净的,它就足够了)。谢谢! – gvl 2010-08-23 03:24:26