How to get the common name for a pytz timezone eg. EST/EDT for America/New_York
Given a pytz timezone for a particular user(calculated from his offset), i want to display the common name for that timezone. I'm assuming people are more accustomed to seeing EST or PST instead of spelled out like America/NewYork.
If you need this derived from a datetime
object localized with 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'>>>
This may not have been around when this question was originally written, but here is a snippet to get the time zone official designation:
>>> eastern = timezone('US/Eastern')>>> eastern.zone'US/Eastern'
Further, this can be used with a non-naive datetime object (aka a datetime where the actual timezone has been set using pytz.<timezone>.localize(<datetime_object>)
or datetime_object.astimezone(pytz.<timezone>)
as follows:
>>> 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'
This is, of course, for the edification of those search engine users who landed here. ... See more at the pytz module site.