给定 UTC 时间戳和 UTC 偏移量,是不是可以在 Python 中获取时区?

Posted

技术标签:

【中文标题】给定 UTC 时间戳和 UTC 偏移量,是不是可以在 Python 中获取时区?【英文标题】:Is it possible to get a timezone in Python given a UTC timestamp and a UTC offset?给定 UTC 时间戳和 UTC 偏移量,是否可以在 Python 中获取时区? 【发布时间】:2010-10-17 06:34:10 【问题描述】:

我有 UTC 偏移量和 UTC 时间的数据。鉴于此,是否有可能在 Python 中获取用户的本地时区(主要是为了确定是否是 DST 等可能使用 pytz),类似于 php timezone_name_from_abbr 中的函数?

例如:

如果我的纪元时间是 1238720309, 我可以得到 UTC 时间:

>>> d = datetime.utcfromtimestamp(1238720309)
>>> print d + dt.timedelta(0,-28800) #offset for pacific I think
2009-04-02 17:04:41.712143 

这是正确的,只是现在是 PDT,所以应该是:

2009-04-02 18:04:41.712413

我想我需要获取在 pytz 中使用的时区来确定它是否是夏令时?

【问题讨论】:

相关:pytz: return Olson Timezone name from only a GMT Offset 【参考方案1】:

没有。时区太复杂,距离 UTC X 小时的时区太多。

http://en.wikipedia.org/wiki/List_of_time_zones

例如,来自 UTC 的 -5 可能是加拿大、纽约、古巴、牙买加、厄瓜多尔等。

赤道地区可能不使用 DST,因为它们的一天大约一年有 12 小时。南美的,如果他们使用某种形式的 DST,可能与北美的时间表相反,因为他们的夏季/冬季(即短日/长日)的时间表也相反。

【讨论】:

【参考方案2】:

没有。 http://en.wikipedia.org/wiki/List_of_U.S._states_by_time_zone

【讨论】:

【参考方案3】:

由于一般来说,对于给定的时区偏移量,可能存在多个时区,因此一般的答案是“不,不是没有更多信息”。更多信息通常是时间适用的位置 - 哪个国家、哪个州或哪个城市。

【讨论】:

时区边界或多或少是随机的。从技术上讲,它们在美国是逐县的,并且不必遵循州界。此外,夏令时因地区而异——特别是在亚利桑那州和印第安纳州,其他州也可能有复杂的规定。

以上是关于给定 UTC 时间戳和 UTC 偏移量,是不是可以在 Python 中获取时区?的主要内容,如果未能解决你的问题,请参考以下文章

查找给定城市的 UTC 偏移量

Python 中给定 TimeZone 的标准 UTC 偏移量(无 DST)

从 UTC 偏移量获取时区名称

在python中获取给定日期和UTC偏移量的GMT时间

如何在 python 和 django 中使用 Pytz 根据给定的 UTC 偏移量转换数据和时间?

如何计算红宝石中给定时区与 UTC 的偏移量(以小时为单位)?