utils timezones mexico python django timezone pytz

python - timezones - Cómo obtener el nombre común para una zona horaria pytz, por ejemplo. EST/EDT para America/New_York



timezone django mexico (3)

Dada una zona horaria de pytz para un usuario en 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 potencialmente, 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 en 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 viene a la mente.

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''