Cómo obtener el nombre común para una zona horaria pytz, por ejemplo. EST / EDT para América / Nueva_York

Dada una zona horaria de pytz para un usuario particular (calculado a partir de su desplazamiento), quiero mostrar el nombre común para esa zona horaria. Supongo que la gente está más acostumbrada a ver EST o PST en lugar de explicarse como America / NewYork .

¿Pytz me da esos nombres estándar en algún lugar o tendré que hacerlo manualmente a través de una tabla? Esto podría ensuciarse, ya que, por ejemplo, los lugares son EST en una temporada y cambian para mostrar EDT durante otras.

Dada una zona horaria de pytz para un usuario particular (calculado a partir de su desplazamiento), quiero mostrar el nombre común para esa zona horaria. Supongo que la gente está más acostumbrada a ver EST o PST en lugar de explicarse como America / NewYork.

Si necesita esto derivado de un objeto datetime localizado con 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' >>> 

Puede usar el método tzname() de instancias tzinfo :

 >>> tz = timezone('America/St_Johns') >>> normal = datetime(2009, 9, 1) >>> tz.tzname(normal, is_dst=False) 'NDT' 

Si está buscando las abreviaturas, hay algunas maneras en las que se le ocurren.

Primero sería:

 >>> from pytz import timezone >>> eastern = timezone('US/Eastern') >>> eastern._tzname 'EST' 

Aunque ya que hace referencia a una propiedad con el subrayado único anterior, puede considerarse privada y puede que no sea el mejor lugar para obtenerla. El otro sería de un objeto datetime localizado.

 >>> from datetime import datetime >>> loc_dt = eastern.localize(datetime.now()) >>> loc_dt.strftime('%Z') 'EST'