2012-08-13 86 views
0

我有一个Web应用程序,它通过JS脚本捕获日期/时间,并计算自UTC格式以来的秒数 - 例如134250270000.在后端,我们有一个Python脚本,用于从DB但是自PST时间以来的时间以秒数存储。如果从纪元开始计算,UTC和PST之间始终有差异。Python将UTC转换为PST/PDT格式

是否有任何方法可以将UTC秒自转换为PST时间以来的时间?我们需要记下PST时区的日光变化?

编辑::

I have the seconds since epoch in UTC format: 

1342502700 

I found that I get the sum in seconds between UTC and local standard time via: 

>>> time.timezone/3600 
8 

So If I add 1342502700 to time.timezone: 

>>> print 1342502700 + time.timezone 
1344153600 

将它总是给我PDT/PST时间是否正确?

编辑::

也许这是正确的:

>>> import time 
>>> offset = time.timezone if (time.daylight == 0) else time.altzone 
>>> offset/60/60 
7 

time.daylight将是非零如果夏令当前有效。

+2

我可能是错的,但我敢肯定,“纪元以来秒”根据UTC总是测量。无论你在这个星球上的什么时间,从这个时代开始的秒数都是一样的,但是如何根据你当地的时区来转换为一天中的一个小时是不同的。 – DaoWen 2012-08-13 08:31:36

+0

我不确定 - UTC格式的134250270000打印一个值,PST格式的134250270000打印其他?如果是这样,请让我知道如何将这个秒数自134250270000时代转换为PST一秒。 – Prakash 2012-08-13 08:36:05

+1

这听起来像对我来说是正确的行为。 UTC与GMT相同,因此以UTC格式打印历史时间以秒为单位打印PST格式的相同值应该是几个小时。 – DaoWen 2012-08-13 08:42:51

回答

0

我觉得在你的转换的某个地方存在一个隐含的时区,这是一个混乱的事情。无论如何,我认为你在寻找什么是time.altzone

>>> from time import * 
>>> ctime(time()) 
'Mon Aug 13 16:54:02 2012' 
>>> ctime(time()+altzone) 
'Mon Aug 13 08:54:04 2012' 

我在台北的时间,现在,所以我的本地时间(第一个)晚于UTC。

编辑:我错过了文档中,说只用altzone如果daylight非零行。显然这比我想象的要复杂一点,如果你住在夏令时的某个地方。请参阅这篇文章,如果你需要处理的是:

Python: get timezone based on DST for a timestamp

+0

我刚刚更新了我的发现 - 感谢您的链接。请让我知道你的想法 – Prakash 2012-08-13 09:43:40

+0

你的更新对我来说很好看!只需检查是否像你在做'日光== 0'应该是你所需要的。 – DaoWen 2012-08-13 15:30:14