如何在Python中将时区转换为国家代码?

2024-05-19 19:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我用过这个

from pytz import country_timezones

但不包括以下时区

Africa/Asmera, Africa/Timbuktu, America/Argentina/ComodRivadavia, America/Atka, America/Buenos_Aires, America/Catamarca, America/Coral_Harbour, America/Cordoba, America/Ensenada, America/Fort_Wayne, America/Indianapolis, America/Jujuy, America/Knox_IN, America/Louisville, America/Mendoza, America/Montreal, America/Porto_Acre, America/Rosario, America/Shiprock, America/Virgin, Antarctica/South_Pole, Asia/Ashkhabad, Asia/Calcutta, Asia/Chongqing, Asia/Chungking, Asia/Dacca, Asia/Harbin, Asia/Istanbul, Asia/Kashgar, Asia/Katmandu, Asia/Macao, Asia/Saigon, Asia/Tel_Aviv, Asia/Thimbu, Asia/Ujung_Pandang, Asia/Ulan_Bator, Atlantic/Faeroe, Atlantic/Jan_Mayen, Australia/ACT, Australia/Canberra, Australia/LHI, Australia/NSW, Australia/North, Australia/Queensland, Australia/South, Australia/Tasmania, Australia/Victoria, Australia/West, Australia/Yancowinna, Brazil/Acre, Brazil/DeNoronha, Brazil/East, Brazil/West, CET, CST6CDT, Canada/Atlantic, Canada/Central, Canada/East-Saskatchewan, Canada/Eastern, Canada/Mountain, Canada/Newfoundland, Canada/Pacific, Canada/Saskatchewan, Canada/Yukon, Chile/Continental, Chile/EasterIsland, Cuba, EET, EST, EST5EDT, Egypt, Eire, Europe/Belfast, Europe/Nicosia, Europe/Tiraspol, GB, GB-Eire, Greenwich, HST, Hongkong, Iceland, Iran, Israel, Jamaica, Japan, Kwajalein, Libya, MET, MST, MST7MDT, Mexico/BajaNorte, Mexico/BajaSur, Mexico/General, NZ, NZ-CHAT, Navajo, PRC, PST8PDT, Pacific/Ponape, Pacific/Samoa, Pacific/Truk, Pacific/Yap, Poland, Portugal, ROC, ROK, Singapore, Turkey, UCT, US/Alaska, US/Aleutian, US/Arizona, US/Central, US/East-Indiana, US/Eastern, US/Hawaii, US/Indiana-Starke, US/Michigan, US/Mountain, US/Pacific, US/Samoa, UTC, Universal, W-SU, WET, Zulu

如何将这些时区转换为国家代码?在


Tags: uswestbrazilsoutheasteuropemexicocanada
1条回答
网友
1楼 · 发布于 2024-05-19 19:29:35

你不能为所欲为。或者,你可以,但是你会得到你想要的结果,而不是你想要的结果。简而言之,如果你问“使用祖鲁的国家”,而没有一个国家使用祖鲁语,你将找不到任何东西。更详细地说


正如Country Information上的文档所说:

A mechanism is provided to access the timezones commonly in use for a particular country, looked up using the ISO 3166 country code.


然而,像America/Buenos_Aires这样的“弃用”区域和US/Pacific这样的“历史”区域并没有在任何特定的国家使用。它们中的许多都是某个国家使用的时区的别名,例如America/Argentina/Buenos_Aires和{},但这对你没有任何好处,因为{}不会公开这些信息。如果您认为这很重要,可以针对pytz提交一个增强请求,以便在将来的版本中添加它。在


无论如何,这就是你如何识别使用给定时区的国家,比如:

{country for country, timezones in country_timezones.items()
 if timezone in timezones}

如果您需要进行大量的这些查找,您当然可以构建自己的dict,使其更快、更简单:

^{pr2}$

现在只是:

timezone_countries[timezone]

但是不管怎样,你可能得到一个空的集合,或者一个由3个国家组成的集合,而不是1个。如果数据库显示有0到3个国家使用这个时区,那就是你将得到的结果。在

相关问题 更多 >