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