【问题标题】:Python Convert UTC to PST / PDT formatPython 将 UTC 转换为 PST/PDT 格式
【发布时间】:2012-08-13 08:21:51
【问题描述】:

我有一个 Web 应用程序,它通过 JS 脚本捕获日期/时间,并以 UTC 格式计算自纪元以来的秒数 - 例如 134250270000。在后端,我们有一个 Python 脚本,它从数据库中获取数据,但日期/时间以数字形式存储自 PST 格式的纪元以来的秒数。如果从纪元开始计算,UTC 和 PST 之间总是存在秒差。

是否有任何方法可以将 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 将不为零。

【问题讨论】:

  • 我可能是错的,但我很确定“自纪元以来的秒数”总是根据 UTC 测量的。无论您在地球上的哪个位置,自纪元以来的秒数都是相同的,但是根据您当地的时区如何将其转换为一天中的一个小时是不同的。
  • 我也不确定——因为 UTC 格式的 134250270000 打印一个值,而 PST 格式的 134250270000 打印另一个?如果是这样,请告诉我如何将自 134250270000 纪元以来的秒数转换为 PST 秒数。
  • 这对我来说听起来是正确的行为。 UTC 与 GMT 相同,因此以 UTC 格式打印自纪元以来的秒数应该比以 PST 格式打印相同的值少几个小时。
  • 您可以查看太平洋标准时间距 UTC on Wikipedia 有多少小时。有趣的是,PST 页面列出了美国太平洋时间、菲律宾和巴基斯坦的时区!
  • 谢谢。问题是,当我将 UTC 日期/时间(例如 08/03/2012 00:00:00)转换为自纪元以来的秒数并转换回 UTC/PST 格式时 - 它们是不同的。有没有办法让使用 UTC 日期/时间计算的纪元以来计算的秒数给我 PST 日期/时间?还有不同的时区 - PDT / PST - 那么当我使用 UTC 日期/时间从纪元开始有秒数时,如何找到 PST / PDT 格式的确切时间?

标签: python


【解决方案1】:

我认为在您的转化中某处隐含的时区会搞砸事情。无论如何,我认为您正在寻找的是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 晚。

编辑:我错过了文档中的那句话,如果daylight 不为零,则只使用altzone。如果你住在有夏令时的地方,显然它比我想象的要复杂一些。如果您需要处理此问题,请参阅此帖子:

Python: get timezone based on DST for a timestamp

【讨论】:

  • 我刚刚更新了我的发现 - 感谢您提供链接。请让我知道您对此的想法
  • 您的更新对我来说看起来不错!只需检查daylight == 0 是否像您正在做的那样就足够了。
猜你喜欢
  • 2018-07-28
  • 2022-01-09
  • 1970-01-01
  • 2016-11-21
  • 2011-09-23
  • 1970-01-01
  • 2013-12-07
  • 2021-03-16
  • 2015-09-08
相关资源
最近更新 更多