基于UTC偏移量如何选择时区?

4

我遇到了一个小问题。我正在解析Facebook用户数据,其中一个字段是时区,以数字表示:

timezone: 用户相对于UTC的时区偏移量

例如我所在地的时区为 'America/Argentina/Buenos_Aires',它的偏移量为-3。

现在,我该如何将这个数字转换为pytz.timezone对象呢?

谢谢!

3个回答

6

这并没有一一对应的关系,因此没有办法在不做出一些无效假设的情况下完成。

您可以创建自己的tzinfo类,直接编码偏移量而不试图将其与时区联系起来。


1
作为替代子类化 tzinfo 的方法,您可以使用 dateutil.tz.tzoffset:https://labix.org/python-dateutil#head-8bf499d888b70bc300c6c8820dc123326197c00f - Mark E. Haase

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']
# ...

-3

但是我需要为此设置一个时区。 - santiagobasulto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接