mexico chile python time timezone dst pytz

chile - Use Python para averiguar si una zona horaria actualmente en horario de verano



pytz timezone chile (2)

from datetime import datetime import pytz isdst_now_in = lambda zonename: bool(datetime.now(pytz.timezone(zonename)).dst())

Ejemplo:

>>> isdst_now_in("America/Los_Angeles") # 2014-10-27 12:32:07 PDT-0700 True >>> isdst_now_in("Australia/Melbourne") # 2014-10-28 06:32:07 AEDT+1100 True

Aquí está la versión solo stdlib en Unix que usa la función time.tzset() :

import os import time from contextlib import contextmanager @contextmanager def local_timezone(zonename): #NOTE: it manipulates global state oldname = os.environ.get(''TZ'') try: os.environ[''TZ''] = zonename time.tzset() yield finally: if oldname is None: del os.environ[''TZ''] else: os.environ[''TZ''] = oldname time.tzset() def time_isdst_now_in(zonename): with local_timezone(zonename): return time.localtime().tm_isdst > 0

El uso es el mismo:

>>> time_isdst_now_in(''Europe/London'') # 2014-04-17 18:42:11 BST+0100 True

Nota: time.daylight no se utiliza debido a problemas en algunos casos de borde .

Esta pregunta ya tiene una respuesta aquí:

Tenemos un servidor que se ejecuta en hora GMT. Necesito escribir una secuencia de comandos de Python que determine si es actualmente (en este momento) el horario de verano (DST) en Los Ángeles, California. ¿Cómo puedo lograr esto? Eché un vistazo a pytz y al tiempo, pero no puedo entenderlo. Me doy cuenta de que podría crear cierta lógica, como comparar la hora actual en LA con la hora GMT, pero sería mucho más limpio si pudiera usar una biblioteca estándar en su lugar.

Gracias

Edición: Aquí hay un código de muestra de mi configuración de la zona horaria:

from pytz import timezone import pytz from datetime import datetime, timedelta tz = timezone(''America/Los_Angeles'') // Instantiate a datetime object using tz?

Edición: Aquí hay un fragmento de código que funcionará. No es elegante, por lo que pregunto si hay una biblioteca o algo que esté hecho para esto. Tal vez como una función is_dst ().

utc = timezone("UTC") now = utc.localize(datetime.utcnow()) los_angeles_tz = timezone(''America/Los_Angeles'') los_angeles_time = now.astimezone(los_angeles_tz) delta = los_angeles_time.utcoffset() dstDelta = timedelta(hours=-8) is_dst = (delta == dstDelta)


import pytz from datetime import datetime, timedelta def is_dst(zonename): tz = pytz.timezone(zonename) now = pytz.utc.localize(datetime.utcnow()) return now.astimezone(tz).dst() != timedelta(0)

Uso:

>>> is_dst("America/Los_Angeles") False >>> is_dst("America/Sao_Paulo") True