pytz
tzinfo
オブジェクトには、STD と DST の境界を示す UTC 遷移時間が含まれています。ただし、この情報にアクセスするには、プライベート属性、特に , に浸る必要があり
tzone._utc_transition_times
ますtzone._transition_info
。したがって、以下は脆弱 pytz
です。将来のバージョンで同じ方法で同じ情報にアクセスできることを保証するものではありません。
それにもかかわらず、少なくとも pytz バージョン 2010b では、上記の属性を使用して、STD にあった最新の期間の日付を見つけることができます。その後、 を使用std_date.strftime('%z')
してオフセットを印刷できます。
import pytz
import datetime as DT
NOW = DT.datetime.now()
ZERO = DT.timedelta(0)
for tname in pytz.common_timezones:
tzone = pytz.timezone(tname)
std_date = None
try:
for utcdate, info in zip(
tzone._utc_transition_times, tzone._transition_info):
utcoffset, dstoffset, tzname = info
if dstoffset == ZERO:
std_date = utcdate
if utcdate > NOW:
break
except AttributeError:
std_date = NOW
std_date = tzone.localize(std_date)
print('{n} UTC{z}'.format(n=tname, z=std_date.strftime('%z')))
版画
Africa/Abidjan UTC+0000
Africa/Accra UTC+0000
Africa/Addis_Ababa UTC+0235
Africa/Algiers UTC+0000
Africa/Asmara UTC+0235
Africa/Bamako UTC+0000
Africa/Bangui UTC+0114
Africa/Banjul UTC+0000
...