Last active
March 23, 2017 05:16
-
-
Save wbchn/d47d0b98effee1c3411a2d8619a15da9 to your computer and use it in GitHub Desktop.
获取时区偏移,是否存在冬、夏令时切换
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from datetime import datetime, timedelta | |
from pytz import timezone | |
import pytz | |
utc = pytz.utc | |
# 如果有冬令时、夏令时切换,下面两个时间的时区偏移不相同(仅针对美国来说,其他地区酌情调整) | |
utc_dt = datetime(2017, 3, 23, 0, 0, 0, tzinfo=utc) | |
utc_dt2 = datetime(2017, 1, 1, 0, 0, 0, tzinfo=utc) | |
fmt = '%Y-%m-%d %H:%M:%S %Z%z' | |
tzs = "Africa/Cairo, Africa/Casablanca, Africa/Harare, Africa/Monrovia, Africa/Nairobi, Africa/Tripoli, Africa/Windhoek, America/Araguaina, America/Asuncion, America/Bogota, America/Caracas, America/Chihuahua, America/Cuiaba, America/Denver, America/Fortaleza, America/Guatemala, America/Halifax, America/Manaus, America/Matamoros, America/Monterrey, America/Montevideo, America/Phoenix, America/Santiago, America/Tijuana, Asia/Amman, Asia/Ashgabat, Asia/Baghdad, Asia/Baku, Asia/Bangkok, Asia/Beirut, Asia/Calcutta, Asia/Damascus, Asia/Dhaka, Asia/Irkutsk, Asia/Jerusalem, Asia/Kabul, Asia/Karachi, Asia/Kathmandu, Asia/Krasnoyarsk, Asia/Magadan, Asia/Muscat, Asia/Novosibirsk, Asia/Riyadh, Asia/Seoul, Asia/Shanghai, Asia/Singapore, Asia/Taipei, Asia/Tehran, Asia/Tokyo, Asia/Ulaanbaatar, Asia/Vladivostok, Asia/Yakutsk, Asia/Yerevan, Atlantic/Azores, Australia/Adelaide, Australia/Brisbane, Australia/Darwin, Australia/Hobart, Australia/Perth, Australia/Sydney, Canada/Newfoundland, Canada/Saskatchewan, Brazil/East, Europe/Amsterdam, Europe/Athens, Europe/Dublin, Europe/Helsinki, Europe/Istanbul, Europe/Kaliningrad, Europe/Moscow, Europe/Paris, Europe/Prague, Europe/Sarajevo, Pacific/Auckland, Pacific/Fiji, Pacific/Guam, Pacific/Honolulu, Pacific/Samoa, US/Alaska, US/Central, US/Eastern, US/East-Indiana, US/Pacific, UTC" | |
for tz in tzs.split(', '): | |
eastern = timezone(tz) | |
loc_dt = utc_dt.astimezone(eastern) | |
loc_dt2 = utc_dt2.astimezone(eastern) | |
print tz, loc_dt.strftime(fmt), loc_dt2.strftime(fmt) | |
# Results | |
# Africa/Cairo 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Africa/Casablanca 2017-03-23 00:00:00 WET+0000 2017-01-01 00:00:00 WET+0000 | |
# Africa/Harare 2017-03-23 02:00:00 CAT+0200 2017-01-01 02:00:00 CAT+0200 | |
# Africa/Monrovia 2017-03-23 00:00:00 GMT+0000 2017-01-01 00:00:00 GMT+0000 | |
# Africa/Nairobi 2017-03-23 03:00:00 EAT+0300 2017-01-01 03:00:00 EAT+0300 | |
# Africa/Tripoli 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Africa/Windhoek 2017-03-23 02:00:00 WAST+0200 2017-01-01 02:00:00 WAST+0200 | |
# America/Araguaina 2017-03-22 21:00:00 BRT-0300 2016-12-31 21:00:00 BRT-0300 | |
# America/Asuncion 2017-03-22 21:00:00 PYST-0300 2016-12-31 21:00:00 PYST-0300 | |
# America/Bogota 2017-03-22 19:00:00 COT-0500 2016-12-31 19:00:00 COT-0500 | |
# America/Caracas 2017-03-22 20:00:00 VET-0400 2016-12-31 20:00:00 VET-0400 | |
# America/Chihuahua 2017-03-22 17:00:00 MST-0700 2016-12-31 17:00:00 MST-0700 | |
# America/Cuiaba 2017-03-22 20:00:00 AMT-0400 2016-12-31 21:00:00 AMST-0300 | |
# America/Denver 2017-03-22 18:00:00 MDT-0600 2016-12-31 17:00:00 MST-0700 | |
# America/Fortaleza 2017-03-22 21:00:00 BRT-0300 2016-12-31 21:00:00 BRT-0300 | |
# America/Guatemala 2017-03-22 18:00:00 CST-0600 2016-12-31 18:00:00 CST-0600 | |
# America/Halifax 2017-03-22 21:00:00 ADT-0300 2016-12-31 20:00:00 AST-0400 | |
# America/Manaus 2017-03-22 20:00:00 AMT-0400 2016-12-31 20:00:00 AMT-0400 | |
# America/Matamoros 2017-03-22 19:00:00 CDT-0500 2016-12-31 18:00:00 CST-0600 | |
# America/Monterrey 2017-03-22 18:00:00 CST-0600 2016-12-31 18:00:00 CST-0600 | |
# America/Montevideo 2017-03-22 21:00:00 UYT-0300 2016-12-31 21:00:00 UYT-0300 | |
# America/Phoenix 2017-03-22 17:00:00 MST-0700 2016-12-31 17:00:00 MST-0700 | |
# America/Santiago 2017-03-22 21:00:00 CLST-0300 2016-12-31 21:00:00 CLST-0300 | |
# America/Tijuana 2017-03-22 17:00:00 PDT-0700 2016-12-31 16:00:00 PST-0800 | |
# Asia/Amman 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Asia/Ashgabat 2017-03-23 05:00:00 +05+0500 2017-01-01 05:00:00 +05+0500 | |
# Asia/Baghdad 2017-03-23 03:00:00 AST+0300 2017-01-01 03:00:00 AST+0300 | |
# Asia/Baku 2017-03-23 04:00:00 +04+0400 2017-01-01 04:00:00 +04+0400 | |
# Asia/Bangkok 2017-03-23 07:00:00 ICT+0700 2017-01-01 07:00:00 ICT+0700 | |
# Asia/Beirut 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Asia/Calcutta 2017-03-23 05:30:00 IST+0530 2017-01-01 05:30:00 IST+0530 | |
# Asia/Damascus 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Asia/Dhaka 2017-03-23 06:00:00 BDT+0600 2017-01-01 06:00:00 BDT+0600 | |
# Asia/Irkutsk 2017-03-23 08:00:00 +08+0800 2017-01-01 08:00:00 +08+0800 | |
# Asia/Jerusalem 2017-03-23 02:00:00 IST+0200 2017-01-01 02:00:00 IST+0200 | |
# Asia/Kabul 2017-03-23 04:30:00 AFT+0430 2017-01-01 04:30:00 AFT+0430 | |
# Asia/Karachi 2017-03-23 05:00:00 PKT+0500 2017-01-01 05:00:00 PKT+0500 | |
# Asia/Kathmandu 2017-03-23 05:45:00 NPT+0545 2017-01-01 05:45:00 NPT+0545 | |
# Asia/Krasnoyarsk 2017-03-23 07:00:00 +07+0700 2017-01-01 07:00:00 +07+0700 | |
# Asia/Magadan 2017-03-23 11:00:00 +11+1100 2017-01-01 11:00:00 +11+1100 | |
# Asia/Muscat 2017-03-23 04:00:00 GST+0400 2017-01-01 04:00:00 GST+0400 | |
# Asia/Novosibirsk 2017-03-23 07:00:00 +07+0700 2017-01-01 07:00:00 +07+0700 | |
# Asia/Riyadh 2017-03-23 03:00:00 AST+0300 2017-01-01 03:00:00 AST+0300 | |
# Asia/Seoul 2017-03-23 09:00:00 KST+0900 2017-01-01 09:00:00 KST+0900 | |
# Asia/Shanghai 2017-03-23 08:00:00 CST+0800 2017-01-01 08:00:00 CST+0800 | |
# Asia/Singapore 2017-03-23 08:00:00 SGT+0800 2017-01-01 08:00:00 SGT+0800 | |
# Asia/Taipei 2017-03-23 08:00:00 CST+0800 2017-01-01 08:00:00 CST+0800 | |
# Asia/Tehran 2017-03-23 04:30:00 IRDT+0430 2017-01-01 03:30:00 IRST+0330 | |
# Asia/Tokyo 2017-03-23 09:00:00 JST+0900 2017-01-01 09:00:00 JST+0900 | |
# Asia/Ulaanbaatar 2017-03-23 08:00:00 ULAT+0800 2017-01-01 08:00:00 ULAT+0800 | |
# Asia/Vladivostok 2017-03-23 10:00:00 +10+1000 2017-01-01 10:00:00 +10+1000 | |
# Asia/Yakutsk 2017-03-23 09:00:00 +09+0900 2017-01-01 09:00:00 +09+0900 | |
# Asia/Yerevan 2017-03-23 04:00:00 +04+0400 2017-01-01 04:00:00 +04+0400 | |
# Atlantic/Azores 2017-03-22 23:00:00 AZOT-0100 2016-12-31 23:00:00 AZOT-0100 | |
# Australia/Adelaide 2017-03-23 10:30:00 ACDT+1030 2017-01-01 10:30:00 ACDT+1030 | |
# Australia/Brisbane 2017-03-23 10:00:00 AEST+1000 2017-01-01 10:00:00 AEST+1000 | |
# Australia/Darwin 2017-03-23 09:30:00 ACST+0930 2017-01-01 09:30:00 ACST+0930 | |
# Australia/Hobart 2017-03-23 11:00:00 AEDT+1100 2017-01-01 11:00:00 AEDT+1100 | |
# Australia/Perth 2017-03-23 08:00:00 AWST+0800 2017-01-01 08:00:00 AWST+0800 | |
# Australia/Sydney 2017-03-23 11:00:00 AEDT+1100 2017-01-01 11:00:00 AEDT+1100 | |
# Canada/Newfoundland 2017-03-22 21:30:00 NDT-0230 2016-12-31 20:30:00 NST-0330 | |
# Canada/Saskatchewan 2017-03-22 18:00:00 CST-0600 2016-12-31 18:00:00 CST-0600 | |
# Brazil/East 2017-03-22 21:00:00 BRT-0300 2016-12-31 22:00:00 BRST-0200 | |
# Europe/Amsterdam 2017-03-23 01:00:00 CET+0100 2017-01-01 01:00:00 CET+0100 | |
# Europe/Athens 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Europe/Dublin 2017-03-23 00:00:00 GMT+0000 2017-01-01 00:00:00 GMT+0000 | |
# Europe/Helsinki 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Europe/Istanbul 2017-03-23 03:00:00 +03+0300 2017-01-01 03:00:00 +03+0300 | |
# Europe/Kaliningrad 2017-03-23 02:00:00 EET+0200 2017-01-01 02:00:00 EET+0200 | |
# Europe/Moscow 2017-03-23 03:00:00 MSK+0300 2017-01-01 03:00:00 MSK+0300 | |
# Europe/Paris 2017-03-23 01:00:00 CET+0100 2017-01-01 01:00:00 CET+0100 | |
# Europe/Prague 2017-03-23 01:00:00 CET+0100 2017-01-01 01:00:00 CET+0100 | |
# Europe/Sarajevo 2017-03-23 01:00:00 CET+0100 2017-01-01 01:00:00 CET+0100 | |
# Pacific/Auckland 2017-03-23 13:00:00 NZDT+1300 2017-01-01 13:00:00 NZDT+1300 | |
# Pacific/Fiji 2017-03-23 12:00:00 FJT+1200 2017-01-01 13:00:00 FJST+1300 | |
# Pacific/Guam 2017-03-23 10:00:00 ChST+1000 2017-01-01 10:00:00 ChST+1000 | |
# Pacific/Honolulu 2017-03-22 14:00:00 HST-1000 2016-12-31 14:00:00 HST-1000 | |
# Pacific/Samoa 2017-03-22 13:00:00 SST-1100 2016-12-31 13:00:00 SST-1100 | |
# US/Alaska 2017-03-22 16:00:00 AKDT-0800 2016-12-31 15:00:00 AKST-0900 | |
# US/Central 2017-03-22 19:00:00 CDT-0500 2016-12-31 18:00:00 CST-0600 | |
# US/Eastern 2017-03-22 20:00:00 EDT-0400 2016-12-31 19:00:00 EST-0500 | |
# US/East-Indiana 2017-03-22 20:00:00 EDT-0400 2016-12-31 19:00:00 EST-0500 | |
# US/Pacific 2017-03-22 17:00:00 PDT-0700 2016-12-31 16:00:00 PST-0800 | |
# UTC 2017-03-23 00:00:00 UTC+0000 2017-01-01 00:00:00 UTC+0000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment