Zulu es un reemplazo directo para DateTime nativo. En esto, todos los objetos DateTime se convierten a UTC y también se almacenan como UTC. Hay un contorno entre UTC y las zonas horarias. Por lo tanto, la representación de las zonas horarias solo se aplica a las conversiones a DateTime ingenuo. Admite formato de string múltiple utilizando directivas strptime strftime y patrones de fecha Unicode.
Instalación
Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install zulu
Módulo de clases de zulú
- zulu.Zulu: la clase Zulu utilizada para representar un objeto UTC DateTime inmutable. Cualquier información de zona horaria que se le proporcione se convertirá de zona horaria a UTC. Si no se proporciona información de la zona horaria, se supone que DateTime es un valor UTC. Todos los tipos de aritmética se realizan en el objeto Fundamental UTC DateTime. En este sentido, Zulu no tiene idea de cambiar la zona horaria. A pesar de esto, la localización ocurre solo cuando un objeto Zulu tiene formato de string.
Funciones o métodos de clase
1. now() : – Devuelve la fecha y hora UTC actual como objeto Zulu.
import
zulu
dt
=
zulu.now()
print
(
"Today date and time is:"
, dt)
Producción:
La fecha y hora de hoy es: 2020-04-17T16:10:15.708064+00:00
2. parse(obj, format=None, default_tz=None):- Buscará una string con formato ISO8601 o una marca de tiempo POSIX de forma predeterminada. Al asumir la zona horaria UTC si no hay zona horaria, devuelve el análisis de objetos Zulu de obj.
import
zulu
print
(
"Zulu object when timezone is passed:"
,
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
))
print
(
"Zulu object when only date is passed:"
,
zulu.parse(
'2020-04-17'
))
print
(
"Zulu object when date and time is passed:"
,
zulu.parse(
'2020-04-17 16:10'
))
print
(
"Zulu object when ISO8601 is passed as formats:"
,
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
,
zulu.ISO8601))
print
(
"Zulu object when Default timezone is used :"
,
zulu.parse(
'2020-04-17'
,
default_tz
=
'US/Eastern'
))
Producción:
Objeto Zulu cuando se pasa la zona horaria: 2020-04-17T16:10:15.708064+00:00
Objeto Zulu cuando solo se pasa la fecha: 2020-04-17T00:00:00+00:00
Objeto Zulu cuando se pasa la fecha y la hora: 2020-04-17T16:10:00+00:00
Objeto Zulu cuando se pasa ISO8601 como formatos: 2020-04-17T16:10:15.708064+00:00
Objeto Zulu cuando se usa la zona horaria predeterminada: 2020-04-17T04:00 :00+00:003. format(format=None, tz=None, locale=’en_US_POSIX’) : Devuelve la fecha y hora de la string usando el formato de formato de string. Al convertir a la zona horaria tz primero opcionalmente.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
print
(
"The Datetime string without timezone is:"
,
dt.
format
(
'% m/% d/% y % H:% M:% S % z'
))
print
(
"The Datetime string without timezone is:"
,
dt.
format
(
'MM / dd / YY HH:mm:ss Z'
))
print
(
"The Datetime string when timezone is given is:"
,
dt.
format
(
'% Y-% m-% d % H:% M:% S % z'
,
tz
=
'US/Eastern'
))
print
(
"The Datetime string when timezone is given as local is:"
,
dt.
format
(
'%Y-%m-%d %H:%M:%S %z'
,
tz
=
'local'
))
Producción:
La string de fecha y hora sin zona horaria es: 17/04/20 16:10:15 +0000 La string de fecha y hora
sin zona horaria es: 17/04/20 16:10:15 +0000
La string de fecha y hora cuando se proporciona la zona horaria es: 2020-04 -17 12:10:15-0400
La string de fecha y hora cuando la zona horaria se proporciona como local es: 2020-04-17 21:40:15+05304. rango (fotograma, inicio, final): el rango de instancias de Zulu se devuelve de principio a fin y en pasos del marco de tiempo dado.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
range1
=
list
(zulu.
range
(
'hour'
, dt,
dt.shift(hours
=
4
)))
range2
=
list
(zulu.
range
(
'minute'
, dt,
dt.shift(minutes
=
4
)))
print
(
"The range when time frame is in hour:"
,
range1)
print
(
"The range when time frame is in minute:"
,
range2)
Producción:
El rango cuando el marco de tiempo está en horas: [<Zulu [2020-04-17T16:10:15.708064+00:00]>,
<Zulu [2020-04-17T17:10:15.708064+00:00]>,
<Zulu [2020-04-17T18:10:15.708064+00:00]>,
<Zulu [2020-04-17T19:10:15.708064+00:00]>]
El rango cuando el marco de tiempo está en minutos: [<Zulu [2020 -04-17T16:10:15.708064+00:00]>,
<Zulú [2020-04-17T16:11:15.708064+00:00]>,
<Zulú [2020-04-17T16:12:15.708064+00:00 ]>,
<Zulú [2020-04-17T16:13:15.708064+00:00]>]5. cambio (otro = ninguno, años = 0, meses = 0, semanas = 0, días = 0, horas = 0, minutos = 0, segundos = 0, microsegundos = 0): puede cambiar la fecha y hora hacia adelante o hacia atrás usando un timedelta que se crea a partir de los argumentos que pasan y se devuelve una nueva instancia de Zulu.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
shifted1
=
dt.shift(hours
=
-
5
, minutes
=
10
)
print
(
"The shifted time is:"
, shifted1)
shifted2
=
dt.shift(minutes
=
55
, seconds
=
11
,
microseconds
=
10
)
print
(
"The new shifted time is:"
, shifted2)
Producción:
The shifted time is: 2020-04-17T11:20:15.708064+00:00 The new shifted time is: 2020-04-17T17:05:26.708074+00:00
6. agregar (otro = ninguno, años = 0, meses = 0, semanas = 0, días = 0, horas = 0, minutos = 0, segundos = 0, microsegundos = 0): agrega tiempo usando un timedelta creado a partir del argumentos pasados y se devuelve una nueva instancia de Zulu. El primer argumento es un objeto ‘timedelta o dateutil.relativedelta en ese caso, se ignoran otros argumentos y en este objeto de fecha y hora se agrega.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
shifted
=
dt.add(minutes
=
5
)
print
(
"The new shifted time zone is :"
, shifted)
Producción:
La nueva zona horaria cambiada es: 2020-04-17T16:15:15.708064+00:00
7. restar (otro = ninguno, años = 0, meses = 0, semanas = 0, días = 0, horas = 0, minutos = 0, segundos = 0, microsegundos = 0): resta tiempo usando un timedelta creado a partir de la argumentos pasados y se devuelve una nueva instancia de Zulu. Un objeto Zulu, datetime, timedelta o dateutil.relativedelta puede ser el primer argumento en ese caso, se ignoran otros argumentos y en este objeto de fecha y hora se resta.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
shifted1
=
dt.subtract(hours
=
5
)
shifted2
=
dt.subtract(hours
=
9
).add(minutes
=
56
)
print
(
"The new shifted timezone is:"
, shifted1)
print
("The new shifted timezone using both add\
and
subtract
is
:", shifted2)
Producción:
La nueva zona horaria cambiada es: 2020-04-17T11:10:15.708064+00:00
La nueva zona horaria cambiada usando suma y resta es: 2020-04-17T08:06:15.708064+00:008. replace(año=Ninguno, mes=Ninguno, día=Ninguno, hora=Ninguno, minuto=Ninguno, segundo=Ninguno, microsegundo=Ninguno, tzinfo=Ninguno, *, fold=Ninguno): reemplaza los atributos de fecha y hora y un se devuelve una nueva instancia de Zulu.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
replaced1
=
dt.replace(day
=
23
, hour
=
15
)
print
(
"Replaced time is:"
, replaced1)
replaced2
=
dt.replace(minute
=
10
, second
=
11
,
microsecond
=
18
)
print
(
"The new replaced time is:"
, replaced2)
Producción:
La hora reemplazada es: 2020-04-23T15:10:15.708064+00:00
La nueva hora reemplazada es: 2020-04-17T16:10:11.000018+00:009. copy(): devuelve una nueva instancia ‘Zulu’ pero con el mismo valor de fecha y hora.
Devoluciones
zulúimport
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064 + 00:00'
)
print
(
"The copied datetime is:"
, dt.copy())
Producción:
La fecha y hora copiada es: 2020-04-17T16:10:15.708064+00:00
Dado que Zulu es inmutable. Por lo tanto, cambiar, reemplazar y copiar devuelven nuevas instancias de Zulu mientras cambia la instancia original.
10. span(frame, count=1): los dos nuevos objetos Zulu se devuelven en relación con el lapso de tiempo entre este objeto y el marco de tiempo que se está dando. De forma predeterminada, el número de fotogramas que se está abarcando es 1. Devuelve un tupla (start_of_frame, end_of_frame).
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064 + 00:00'
)
print
(
"The span of a century:"
, dt.span(
'century'
))
print
(
"The span of a month:"
, dt.span(
'month'
))
print
(
"The span of a day:"
, dt.span(
'day'
))
print
(
"The span of a decade:"
, dt.span(
'decade'
))
print
(
"The span of a century with given count is:"
,
dt.span(
'century'
, count
=
3
))
Producción:
El lapso de un siglo: (<Zulu [2000-01-01T00:00:00+00:00]>, <Zulu [2099-12-31T23:59:59.999999+00:00]>)
El lapso de un mes : (<Zulu [2020-04-01T00:00:00+00:00]>, <Zulu [2020-04-30T23:59:59.999999+00:00]>)
El lapso de un día: (<Zulu [ 2020-04-17T00:00:00+00:00]>, <Zulu [2020-04-17T23:59:59.999999+00:00]>)
El lapso de una década: (<Zulu [2020-01-01T00 :00:00+00:00]>, <Zulu [2029-12-31T23:59:59.999999+00:00]>)
El lapso de un siglo con la cuenta dada es: (<Zulu [2000-01-01T00: 00:00+00:00]>, <Zulú [2299-12-31T23:59:59.999999+00:00]>)11. span_range(frame, start, end): se devuelve un rango de intervalos de tiempo desde el inicio dado hasta el final en los pasos del marco de tiempo dado.
import
zulu
start
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
end
=
zulu.parse(
'2020-04-17T22:10:15.708064+00:00'
)
for
span
in
zulu.span_range(
'hour'
, start, end):
print
(span)
Producción:
(<Zulú [2020-04-17T16:00:00+00:00]>, <Zulú [2020-04-17T16:59:59.999999+00:00]>)
(<Zulú [2020-04-17T17:00] :00+00:00]>, <Zulú [2020-04-17T17:59:59.999999+00:00]>)
(<Zulú [2020-04-17T18:00:00+00:00]>, <Zulú [2020-04-17T18:59:59.999999+00:00]>)
(<Zulú [2020-04-17T19:00:00+00:00]>, <Zulú [2020-04-17T19:59:59.999999+ 00:00]>)
(<Zulú [2020-04-17T20:00:00+00:00]>, <Zulú [2020-04-17T20:59:59.999999+00:00]>)
(<Zulú [2020 -04-17T21:00:00+00:00]>, <Zulú [2020-04-17T21:59:59.999999+00:00]>)12. start_of(frame): para esta fecha y hora, devuelve el inicio del marco de tiempo dado f.
13. start_of_day() : para esta fecha y hora, devuelve un nuevo objeto/conjunto Zulu al comienzo del día.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064 + 00:00'
)
print
(
"The start of month is:"
, dt.start_of(
'month'
))
print
(
"The start of day is:"
, dt.start_of_day())
Producción:
The start of month is: 2020-04-01T00:00:00+00:00 The start of day is: 2020-04-17T00:00:00+00:00
Otras funciones start_of son:
Nombre de la función Descripción inicio_de_siglo() Regrese un nuevo conjunto zulú para esta fecha y hora al comienzo del siglo. inicio_de_década() Regrese un nuevo conjunto Zulu para esta fecha y hora al comienzo de la década. inicio_de_hora() Devuelve un nuevo conjunto Zulu para esta fecha y hora al comienzo de la hora. comienzo_del_minuto() Devuelve un nuevo conjunto Zulu para esta fecha y hora al comienzo del minuto. inicio_de_mes() Devuelva un nuevo conjunto Zulu para esta fecha y hora al comienzo del mes. inicio_de_segundo() Devuelva un nuevo conjunto Zulu para esta fecha y hora al comienzo de la segunda. inicio_de_año() Devuelva un nuevo conjunto Zulu para esta fecha y hora al comienzo del año. 14. end_of(frame, count=1): para esta fecha y hora, devuelve el final del marco de tiempo dado. f. Por defecto, el número de fotogramas que se está abarcando es 1.
15. end_of_day(count=1): para esta fecha y hora, devuelve un nuevo objeto/conjunto Zulu al final del día.
Por defecto, el número de fotogramas que se está expandiendo es 1.import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
print
(
"The end of month is:"
, dt.end_of(
'month'
,
1
))
print
(
"The end of day is without count:"
, dt.end_of_day())
print
(
"The end of day is with the count of 2:"
, dt.end_of_day(
2
))
Producción:
El final del mes es: 2020-04-30T23:59:59.999999+00:00
El final del día es sin contar: 2020-04-17T23:59:59.999999+00:00
El final del día es con la cuenta de 2 : 2020-04-18T23:59:59.999999+00:00Otras funciones end_of son:
Nombre de la función Descripción fin_de_siglo(recuento=1) Devuelva un nuevo conjunto zulú para esta fecha y hora hasta el final del siglo. end_of_decade(recuento=1) Devuelva un nuevo conjunto Zulu para esta fecha y hora hasta el final de la década. fin_de_hora(recuento=1) Devuelve un nuevo conjunto Zulu para esta fecha y hora al final de la hora. fin_de_minuto(recuento=1) Devuelve un nuevo conjunto Zulu para esta fecha y hora al final del minuto. fin_de_mes(recuento=1) Devuelva un nuevo conjunto Zulu para esta fecha y hora al final del mes. fin_de_segundo(recuento=1) Devuelve un nuevo conjunto Zulu para esta fecha y hora al final del segundo. fin_de_año(recuento=1) Devuelva un nuevo conjunto Zulu para esta fecha y hora hasta el final del año. 16. time_from(dt, **options) : Devuelve la diferencia entre este y otro datetime dado en ‘time ago’ .
Parámetros- dtime: un objeto de fecha y hora.
Devuelve
str17. time_from_now(**opciones): Devuelve la diferencia entre este y ahora en “hace tiempo”.
18. time_to(dt, **opciones) : Devuelve la diferencia entre este datetime y otro datetime en “time to”.
19. time_to_now(**options): devuelve la diferencia entre esta fecha y hora y ahora en «time to».
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064+00:00'
)
print
(
"The difference between this time and end of the day is:"
,
dt.time_from(dt.end_of_day()))
print
(
"The difference between this time and end of the day is:"
,
dt.time_to(dt.end_of_day()))
print
(
"The difference between this time and start of the day is:"
,
dt.time_from(dt.start_of_day()))
print
(
"The difference between this time and start of the day is:"
,
dt.time_to(dt.start_of_day()))
print
(
"The difference is"
, dt.time_from_now())
print
(
"The difference is"
, dt.time_to_now())
Producción:
La diferencia entre esta hora y el final del día es: hace 8 horas
La diferencia entre esta hora y el final del día es: en 8 horas
La diferencia entre esta hora y el comienzo del día es: en 16 horas
La diferencia entre esta hora y el comienzo del día es: hace 16 horas
La diferencia es hace 2 días
La diferencia es en 2 días20. astimezone(tz=’local’): devuelve el objeto nativo de fecha y hora desplazado a la zona horaria dada. Por defecto, la zona horaria es local.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064 + 00:00'
)
local
=
dt.astimezone()
print
(
"Local timezone is"
, local)
pacific
=
dt.astimezone(
'US / Pacific'
)
print
(
"Pacific timezone is:"
, pacific)
Producción:
La zona horaria local es 2020-04-17 21:40:15.708064+05:30 La
zona horaria del Pacífico es: 2020-04-17 09:10:15.708064-07:0021. timetuple() : Devuelve la tupla de tiempo.
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064 + 00:00'
)
print
(
"The timetuple is:"
, dt.timetuple())
PRODUCCIÓN
El timetuple es: time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, tm_hour=16, tm_min=10, tm_sec=15, tm_wday=4, tm_yday=108, tm_isdst=-1)
22. utcnow() : Devuelve la fecha y hora UTC actual.
23. utcoffset() : Devuelve la diferencia en horas, minutos y segundos del tiempo universal correspondiente para un lugar en particular.
24. utctimetuple() : Devuelve la tupla de tiempo UTC coordinada con time.localtime()
import
zulu
dt
=
zulu.parse(
'2020-04-17T16:10:15.708064 + 00:00'
)
print
(
"The current UTC datetime is:"
, dt.utcnow())
print
(
"The utcoffest is:"
, dt.utcoffset())
print
(
"The utctimetuple is:"
, dt.utctimetuple())
Producción:
La fecha y hora UTC actual es: 2020-04-19T07:17:30.162600+00:00
El utcoffest es: 0:00:00
El utctimetuple es: time.struct_time(tm_year=2020, tm_mon=4, tm_mday=17, tm_hour= 16, tm_min=10, tm_sec=15, tm_wday=4, tm_yday=108, tm_isdst=0)Otras funciones en esta clase son:
Nombre de la función Descripción tiempoc() Devuelve una string de estilo ctime(). fecha() Devuelve un objeto de fecha pero con el mismo año, mes y día y en el mismo orden. fecha y hora Devuelve un objeto de fecha y hora nativo. fechahoratuple() Devuelve una tupla de fecha y hora que contiene año, mes, día, hora, minuto, segundo, microsegundo, tzoneinfo. fechatuple() Devuelve una tupla de fecha que contiene año, mes, día. días_en_mes() Devuelve el número total de días del mes. horario de verano() Volver al horario de verano es_después (otro) Devuelve si esta fecha y hora es posterior a otra o no es_antes (otro) Devuelve si esta fecha y hora es anterior a otra o no está_entre(comienzo, fin) Devuelve si esta fecha y hora está entre el inicio y el final inclusive o no es_año_bisiesto() Devuelve si el año de esta fecha y hora es un año bisiesto o no. está_en_o_después(otro) Devuelve si esta fecha y hora está en o después de otra está_en_o_antes (otro) Devuelve si esta fecha y hora es igual o anterior a otra isocalendario() Devuelve una tupla de 3 que contiene el año ISO, el número de semana y el día de la semana isoformato() Devuelve una string en formato ISO 8601, es decir. AAAA-MM-DDTHH:MM:SS[.mmmmmm][+HH:MM]. isodía de la semana() Devuelve el día de la semana representado por la fecha Ej. Lunes == 1, Martes == 2. . . domingo ==7 ingenuo Devuelve un objeto de fecha y hora nativo. strftime() Formato de retorno: string de estilo strftime(). strptime() String de retorno, formato: nueva fecha y hora que se analiza a partir de una string. tiempo() Devuelve un objeto de hora con la misma hora pero con timezoneinfo=None tiempotz() Devuelve un objeto de hora pero con la misma hora y timezoneinfo. Este Dia() Devuelve la fecha actual o la fecha y hora. toordinal() Devuelve el ordinal juliano/gregoriano proléptico. tzname() Devuelve el nombre de la zona horaria asociada con el objeto de fecha y hora. utcfromtimestamp(marca de tiempo) Devuelve un objeto Zulu desde una marca de tiempo POSIX. día laborable() Devuelve el día de la semana representado por la fecha. lunes == 0, martes == 1. . . domingo ==6 desdefechahora(dt) Devuelve un objeto Zulu desde un objeto nativo de fecha y hora. fromgmtime(estructura) Devuelve un objeto Zulu de una tupla como la devuelta por time.gmtime que representa una fecha y hora UTC. desdehoralocal(estructura) Devuelve un objeto Zulu de una tupla como la devuelta por time.localtime que representa una fecha y hora local. de ordinal(ordinal) Retorna el objeto zulú de un ordinal juliano/gregoriano proléptico. fromtimestamp(timestamp, tz=tzutc()) Devuelve el objeto Zulu desde una marca de tiempo POSIX. - zulu.Delta: –
Es una versión extendida de datetime.timedelta que proporciona una nueva funcionalidad.
Funciones o métodos de clase
1. parse_delta (obj): devuelve el objeto Delta analizado desde el obj dado.
import
zulu
delta1
=
zulu.parse_delta(
'4h 45m'
)
delta2
=
zulu.parse_delta(
'-4h 45m'
)
print
(
"The delta is:"
, delta1)
print
(
"The delta is:"
, delta2)
Producción:
The delta is: 4:45:00 The delta is: -1 day, 19:15:00
2. formato (formato = ‘largo’, granularidad = ‘segundo’, umbral = 0.85, add_direction = False, locale = Ninguno): devuelve timedelta como una string formateada.
import
zulu
delta
=
zulu.parse_delta(
'4h 45m'
)
print
(
"The timedelta with given granularity is:"
,
delta.
format
(granularity
=
'day'
))
print
(
"The timedelta with given locale is:"
,
delta.
format
(locale
=
'de'
))
print
(
"The timedelta with given locale and add_direction is:"
,
delta.
format
(locale
=
'fr'
, add_direction
=
True
))
print
(
"The timedelta with given threshold is:"
,
delta.
format
(threshold
=
5
))
print
(
"The timedelta with given threshold and granularity is:"
,
delta.
format
(threshold
=
155
, granularity
=
'minute'
))
Producción:
El timedelta con una granularidad determinada es: 1 día
El timedelta con una configuración regional dada es: 5 Stunden
El timedelta con una ubicación determinada y add_direction es: dans 5 heures
El timedelta con un umbral determinado es: 285 minutos
El timedelta con un umbral determinado y una granularidad es: 285 minutos3. fromtimedelta(delta): desde un objeto timedelta nativo, devuelve un objeto Delta.
import
zulu
delta
=
zulu.parse_delta(
'4h 45m'
)
delta1
=
zulu.parse_delta(
'6h 42m 11s'
)
print
(
"The timedelta is:"
, delta.fromtimedelta(delta1))
Producción:
The timedelta is: 6:42:11
- zulu.ParseError: – Provocó
una excepción cuando un objeto no se puede analizar como una fecha y hora.
Publicación traducida automáticamente
Artículo escrito por nishthagoel712 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA