特定のユーザーのpytzタイムゾーン(オフセットから計算)を指定すると、そのタイムゾーンの共通名を表示したいと思います。スペルの代わりに[〜#〜] est [〜#〜]または[〜#〜] pst [〜#〜]を参照することに慣れている人を想定しているAmerica/NewYorkのように。
Pytzは標準的な名前をどこかに教えてくれますか、それともテーブルから手動で行う必要がありますか?たとえば場所がシーズン中にESTになり、他の期間中にEDTを表示するようになるため、これは混乱する可能性があります。
特定のユーザーのpytzタイムゾーン(オフセットから計算)を指定すると、そのタイムゾーンの共通名を表示したいと思います。私は、人々がアメリカ/ニューヨークのように綴られるよりも、ESTまたはPSTを見ることに慣れていると思います。
これが必要な場合は、datetime
でローカライズされたpytz
オブジェクトから派生します...
>>> import pytz as tz
>>> from datetime import datetime as dt
>>> CT = tz.timezone('America/Chicago')
>>>
>>> summer_day = dt(2010, 7, 4, 0, 1, 1)
>>> bar = CT.localize(summer_day, is_dst=None)
>>> bar.tzname()
'CDT'
>>>
>>> christmas = dt(2010, 12, 25, 0, 1, 1)
>>> foo = CT.localize(christmas, is_dst=None)
>>> foo.tzname()
'CST'
>>>
tzinfo
インスタンスのtzname()
メソッドを使用できます。
>>> tz = timezone('America/St_Johns')
>>> normal = datetime(2009, 9, 1)
>>> tz.tzname(normal, is_dst=False)
'NDT'
あなたが略語を探しているなら、頭に浮かぶいくつかの方法があります。
最初は:
>>> from pytz import timezone
>>> eastern = timezone('US/Eastern')
>>> eastern._tzname
'EST'
それは前の単一の下線でプロパティを参照するので、それはプライベートであると考えられるかもしれません、そしてそれをつかむのに最適な場所ではないかもしれません。もう1つは、ローカライズされた日時オブジェクトからのものです。
>>> from datetime import datetime
>>> loc_dt = eastern.localize(datetime.now())
>>> loc_dt.strftime('%Z')
'EST'
これは、この質問が最初に書かれたときはなかったかもしれませんが、タイムゾーンの正式名称を取得するためのスニペットを次に示します。
_>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'
_
さらに、これはナイーブでない日時オブジェクト(実際のタイムゾーンがpytz.<timezone>.localize(<datetime_object>)
またはdatetime_object.astimezone(pytz.<timezone>)
を使用して次のように設定されている日時)で使用できます。
_>>> import datetime, pytz
>>> todaynow = datetime.datetime.now(tz=pytz.timezone('US/Hawaii'))
>>> todaynow.tzinfo # turned into a string, it can be split/parsed
<DstTzInfo 'US/Hawaii' HST-1 day, 14:00:00 STD>
>>> todaynow.strftime("%Z")
'HST'
>>> todaynow.tzinfo.zone
'US/Hawaii'
_
もちろん、これはここに上陸した検索エンジンのユーザーを教育するためのものです。 ...詳細は pytzモジュールサイト を参照してください。