我想知道Python库pytz中timezone参数的所有可能值是什么。怎么做呢?


当前回答

你可以在这里找到所有pytz支持的时区:

https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568

其他回答

时区名称是指定时区的唯一可靠方式。

您可以在这里找到时区名称列表:http://en.wikipedia.org/wiki/List_of_tz_database_time_zones 请注意,该列表包含许多别名,例如时区的US/Eastern正确地称为America/New_York。

如果您希望通过编程方式从zoneinfo数据库创建此列表,则可以从zone编译它。zoneinfo数据库中的TAB文件。我不认为pytz有一个API来获取它们,而且我也不认为它会非常有用。

不要创建自己的列表- pytz有一个内置的集合:

import pytz
set(pytz.all_timezones_set)  
>>> {'Europe/Vienna', 'America/New_York', 'America/Argentina/Salta',..}

然后你可以应用一个时区:

import datetime
tz = pytz.timezone('Pacific/Johnston')
ct = datetime.datetime.now(tz=tz)
>>> ct.isoformat()
2017-01-13T11:29:22.601991-05:00

或者如果你已经有一个datetime对象是TZ感知的(不是天真的):

# This timestamp is in UTC
my_ct = datetime.datetime.now(tz=pytz.UTC)

# Now convert it to another timezone
new_ct = my_ct.astimezone(tz)
>>> new_ct.isoformat()
2017-01-13T11:29:22.601991-05:00

你可以在这里找到所有pytz支持的时区:

https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568

你可以用pytz.all_timezones列出所有可用的时区:

In [40]: import pytz
In [41]: pytz.all_timezones
Out[42]: 
['Africa/Abidjan',
 'Africa/Accra',
 'Africa/Addis_Ababa',
 ...]

还有pytz.common_timezones:

In [45]: len(pytz.common_timezones)
Out[45]: 403

In [46]: len(pytz.all_timezones)
Out[46]: 563

它们似乎是由这里找到的tz数据库时区填充的。