如何根据UTC偏移量选择时区?

问题描述:

我有一个愚蠢的问题。我解析Facebook的用户数据,我也得到了时区数字:如何根据UTC偏移量选择时区?

时区:用户的时区从UTC

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

现在,我怎么可以转换数字为pytz.timezone

谢谢!

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

+0

但我需要有一个时区。 – santiagobasulto 2012-07-25 19:43:16

这里没有一个1:1点的对应关系,所以没有办法做到这一点而不进行一些假设必然是无效的。

您可以创建自己的tzinfo类编码直接偏移没有试图把它回区。

+1

作为'tzinfo'子类别的替代方法,您可以使用''dateutil.tz.tzoffset'':https://labix.org/python-dateutil#head-8bf499d888b70bc300c6c8820dc123326197c00f – 2017-08-19 16:14:55

作为@Mark Ransom said,多发性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'] 
# ...