4

我有一个愚蠢的问题。我正在解析 Facebook 用户数据,并将时区作为数字获取:

时区:用户的时区与 UTC 的偏移量

对我来说('America/Argentina/Buenos_Aires')是-3。

现在,我怎样才能将该数字转换为pytz.timezone

谢谢!

4

3 回答 3

5

没有 1:1 的对应关系,因此如果不做出一些必然无效的假设,就无法做到这一点。

您可以创建自己的tzinfo类来直接对偏移进行编码,而无需尝试将其绑定回区域。

于 2012-07-25T19:47:17.457 回答
2

正如@Mark Ransom 所说,多个pytz.timezone在给定日期可能具有相同的 UTC 偏移量。您可以打印特定日期的映射:

#!/usr/bin/env python
from collections import defaultdict
from datetime import datetime

import pytz # $ pip install pytz

dt = datetime.now(pytz.utc) # current time in UTC
zone_names = defaultdict(list)
for tz in pytz.common_timezones:
    zone_names[dt.astimezone(pytz.timezone(tz)).utcoffset()].append(tz)

for offset, zone in sorted(zone_names.items()):
    print("%.1f %s" % (offset.total_seconds() / 3600, zone))
# -> -11.0 ['Pacific/Midway', 'Pacific/Niue', 'Pacific/Pago_Pago']
# ...
于 2014-09-13T16:58:00.700 回答
-2

您可以使用tzinfo.tzname获取区域名称。

于 2012-07-25T19:40:53.293 回答