2012-07-25 102 views
2

我有一個愚蠢的問題。我解析Facebook的用戶數據,我也得到了時區數字:如何根據UTC偏移量選擇時區?

時區:用戶的時區從UTC

抵消對我來說('America/Argentina/Buenos_Aires')是-3。

現在,我怎麼可以轉換數字爲pytz.timezone

謝謝!

回答

5

這裏沒有一個1:1點的對應關係,所以沒有辦法做到這一點而不進行一些假設必然是無效的。

您可以創建自己的tzinfo類編碼直接偏移沒有試圖把它回區。

+1

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

1

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