La clase DateTime proporciona varias funciones para manipular los intervalos de fecha y hora. El objeto DateTime que usa datetime.now()
es en realidad el objeto de la clase DateTime. Estos objetos nos ayudan a usar las funciones de fechas y horas.
Nota: Para obtener más información, consulte el módulo de fecha y hora de Python con ejemplos
FechaHora.tzinfo()
El datetime.now()
no tiene ninguna información sobre las zonas horarias. Simplemente utiliza la hora actual del sistema. En algunas situaciones, es posible que se necesiten los detalles de la zona horaria. En tales casos se utiliza la clase abstracta tzinfo . tzinfo es una clase base abstracta. No se puede instanciar directamente. Una subclase concreta tiene que derivarla e implementar los métodos proporcionados por esta clase abstracta.
La instancia de la clase tzinfo se puede pasar a los constructores de los objetos de fecha y hora. Encuentra sus aplicaciones en situaciones como la conversión de la hora local a UTC o para tener en cuenta el horario de verano.
Objetos de fecha y hora Naive y Aware
Se dice que un objeto de fecha y hora que no contiene ninguna información sobre la zona horaria es un objeto de fecha y hora ingenuo . Para un objeto ingenuo de fecha y hora, datetime_object.tzinfo
será None
. Un objeto de fecha y hora de Aware contiene la información de la zona horaria incrustada en él.
Los métodos disponibles para la implementación en la clase base tzinfo son:
- utcoffset(self, dt)
- dst(uno mismo, dt)
- tzname(auto, dt)
- fromutc(auto, dt)
descontar()
Devuelve el desplazamiento de la instancia de fecha y hora pasada como argumento.
¿A qué se refiere este desplazamiento?
Se refiere al desplazamiento de la zona horaria que indica cuántas horas está adelantada la zona horaria con respecto a la hora universal coordinada o la hora universal coordinada (UTC). El desplazamiento se escribe como +00:00. Por ejemplo: para Asia/Taipei, se escribe como UTC+08:00.
Toma la hora de un objeto de fecha y hora y devuelve la diferencia entre la hora en el objeto de fecha y hora y la hora del mismo punto en UTC. Devuelve el desplazamiento en minutos al este de UTC . Si la hora local está al oeste de UTC, sería negativo. La forma general de implementación es la siguiente:
For fixed offset : def utcoff(self, dt): return constant For time aware objects : def utcoffset(self, dt): return self.stdoffset + self.dst(dt)
horario de verano()
Se abrevia como Hora de ahorro de luz diurna . Denota adelantar el reloj 1 hora en horario de verano, para que la oscuridad caiga más tarde según el reloj. Está activado o desactivado. Se verifica en base a una tupla que contiene 9 elementos de la siguiente manera:
(dt.año, dt.mes, dt.día, dt.hora, dt.minuto, dt.segundo, dt.día de la semana(), 0, 0)
Se escribe una función privada para devolver 0, 1 o -1 dependiendo de estos 9 elementos. En base a eso dst(self, dt)
se decide el valor de. La función se escribe en la clase donde dst()
se define. Está escrito como:
def _isdst(self, dt): tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, 0) stamp = _time.mktime(tt) tt = _time.localtime(stamp) return tt.tm_isdst > 0
Aquí mktime()
toma esta tupla y la convierte en tiempo en segundos transcurridos desde la época en la hora local. Luego, tm_isdst()
se usa junto con mktime. Devuelve los valores de la siguiente manera:
‘1’ : horario de verano activado
‘0’ : horario de verano desactivado
‘-1’ : información de horario de verano desconocida
Después de agregar este código a la clase, dst()
se puede definir como se indica a continuación en función de las condiciones.
For fixed offset class : def dst(self, dt): return ZERO For time aware objects : def utcoffset(self, dt): if self._isdst(dt): return DSTOFFSET else: return STDOFFSET
tzname()
Esto se usa para encontrar el nombre de la zona horaria del objeto de fecha y hora pasado. Devuelve un objeto Python String.
Ejemplo:
import datetime as dt from dateutil import tz tz_string = dt.datetime.now(dt.timezone.utc).astimezone().tzname() print("datetime.now() :", tz_string) NYC = tz.gettz('Europe / Berlin') dt1 = dt.datetime(2015, 5, 21, 12, 0) dt2 = dt.datetime(2015, 12, 21, 12, 0, tzinfo = NYC) print("Naive Object :", dt1.tzname()) print("Aware Object :", dt2.tzname())
datetime.now() : UTC Naive Object : None Aware Object : CET
desdeutc()
Esta función toma la fecha y la hora del objeto en UTC y devuelve la hora local equivalente. Se utiliza principalmente para ajustar la fecha y la hora. Se llama desde la datetime.astimezone()
implementación por defecto. El dt.tzinfo se pasará como propio, los datos de fecha y hora de dt se devolverán como una hora local equivalente.
Nota: Se generará ValueError
si dt.tzinfo no es propio o/y dst() es Ninguno.
La implementación general se da a continuación:
def fromutc(self, dt): dt_offset = dt.utcoffset() dt_dst = dt.dst() delta = dt_offset - dt_dst if delta: dt += delta dtdst = dt.dst() if dtdst: return dt + dtdst else: return dt
Publicación traducida automáticamente
Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA