yyyy str into convertir convert python datetime timezone pytz

convertir - string into date python



Cómo agregar timezone en una instancia ingenua de datetime en python (2)

Si sabe que su hora de fecha original fue "medida" en la zona horaria que intenta agregar, podría (pero probablemente no debería) usar replace lugar de localize .

# d = datetime.datetime.now() # tz = pytz.timezone(''Asia/Taipei'') d = d.replace(tzinfo=tz)

Puedo imaginar 2 veces cuando esto podría tener sentido (el segundo me pasó a mí):

  1. La configuración regional del servidor está configurada en la zona horaria incorrecta y está intentando corregir una instancia de datetime y datetime conociendo esta zona horaria incorrecta (y, presumiblemente, localizándola más tarde en la zona horaria "correcta" para que los valores de ahora () coincidan otras veces lo está comparando con (su reloj, tal vez)
  2. Desea "etiquetar" una instancia de time ( NO una datetime y datetime ) con un atributo de zona horaria (tzinfo) para que el atributo se pueda usar posteriormente para formar una instancia de datetime completa.

Esta pregunta ya tiene una respuesta aquí:

Tengo una datetime y datetime que no tiene información de zona horaria. Ahora obtengo la información de la zona horaria y me gustaría agregar la zona horaria en la instancia datetime existente, ¿cómo puedo hacer?

d = datetime.datetime.now() tz = pytz.timezone(''Asia/Taipei'')

Cómo agregar la información de la zona horaria tz en datetime a


Use tz.localize(d) para localizar la instancia. De la documentation :

El primero es usar el método de localización () provisto por la biblioteca de pytz. Esto se usa para localizar una fecha de inicio ingenua (fecha y hora sin información de zona horaria):

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0)) >>> print(loc_dt.strftime(fmt)) 2002-10-27 06:00:00 EST-0500

Si no usa tz.localize() , pero use datetime.replace() , es probable que se use un desplazamiento histórico ; tz.localize() seleccionará el desplazamiento correcto en efecto para la fecha dada. Por ejemplo, las fechas de inicio y finalización del DST de la zona horaria este de EE. UU. Han cambiado con el tiempo.

Cuando intente localizar un valor de fecha y hora que sea ambiguo porque abarca el período de transición de verano a invierno o viceversa, se consultará la zona horaria para ver si el objeto datetime resultante debe tener .dst() devolver verdadero o falso. Puede anular el valor predeterminado para la zona horaria con el argumento de la palabra clave .localize() para .localize() :

dt = tz.localize(naive, is_dst=True)

o incluso desactivar la opción por completo estableciendo is_dst=None . En ese caso, o en los casos excepcionales, no hay un conjunto predeterminado para una zona horaria, un valor ambiguo de fecha y hora generaría una excepción AmbiguousTimeError . El indicador is_dst solo se consulta para valores de fecha y hora que son ambiguos y se ignora de lo contrario.

Para volver por el otro camino, convertir un objeto que tenga en zona horaria a un objeto ingenuo, use .replace(tzinfo=None) :

naivedt = awaredt.replace(tzinfo=None)