Python – Módulo de péndulo

El péndulo es una de las bibliotecas populares de Python DateTime para facilitar la manipulación de DateTime. Proporciona una API más limpia y fácil de usar. Simplifica el problema de manipulaciones de fechas complejas que involucran zonas horarias que no se manejan correctamente en instancias nativas de fecha y hora.

Hereda de la biblioteca de fecha y hora estándar, pero proporciona una mejor funcionalidad. Por lo tanto, puede introducir instancias de fecha y hora de Pendulums en proyectos que ya usan la clase de fecha y hora incorporada (a excepción de las bibliotecas que verifican el tipo de los objetos mediante el uso de la función de tipo como sqlite3).

Para instalar este módulo, ejecute este comando en su terminal:

pip install pendulum

Veamos los ejemplos sencillos:

Puede crear instancias de fecha y hora usando varios métodos como datetime(), local(),now(),from_format().

Ejemplo : 

Python3

# import library
import pendulum
dt = pendulum.datetime(2020, 11, 27)
print(dt)
 
#local() creates datetime instance with local timezone
local = pendulum.local(2020, 11,27)
print(local)
print(local.timezone.name)

Producción:

2020-11-27T00:00:00+00:00
2020-11-27T00:00:00+05:30
Asia/Calcutta

Conversión de zonas horarias

Puede convertir zonas horarias usando el método in_timezone() o usando la biblioteca de zonas horarias directamente. Consulte el siguiente ejemplo para una mejor comprensión.

Nota: UTC (Tiempo universal coordinado) es el estándar de tiempo principal por el cual el mundo regula los relojes y la hora.

Ejemplo :

Python3

# Importing library
import pendulum
 
# Getting current UTC time
utc_time = pendulum.now('UTC')
 
# Switching current timezone to
# Kolkata timezone using in_timezone().
kolkata_time = utc_time.in_timezone('Asia/Kolkata')
print('Current Date Time in Kolkata =', kolkata_time)
 
# Generating Sydney timezone
sydney_tz = pendulum.timezone('Australia/Sydney')
 
# Switching current timezone to
# Sydney timezone using convert().
sydney_time = sydney_tz.convert(utc_time)
print('Current Date Time in Sydney =', sydney_time)

Producción :

Current Date Time in Kolkata = 2020-11-27T15:16:36.985136+05:30
Current Date Time in Sydney = 2020-11-27T20:46:36.985136+11:00

Manipulaciones de fecha y hora

Para la manipulación de fecha y hora, podemos usar los métodos add() y rest(). Cada método devuelve una nueva instancia de DateTime.

Ejemplo :

Python3

# Importing the library
import pendulum
# creating datetime instance
dt = pendulum.datetime(2020, 11, 27)
print(dt)
 
# Manipulating datetime object using add()
dt = dt.add(years=5)
print(dt)
 
# Manipulating datetime object using subtract()
dt = dt.subtract(months = 1)
print(dt)
 
# Similarly you can add or subtract
# months,weeks,days,hours,minutes
# individually or all at a time.
dt = dt.add(years=3, months=2, days=6,
            hours=12, minutes=30, seconds=45)
 
print(dt)

Producción : 

2020-11-27T00:00:00+00:00
2025-11-27T00:00:00+00:00
2025-10-27T00:00:00+00:00
2029-01-02T12:30:45+00:00

Formato de fecha y hora

Podemos convertir la fecha y la hora en una string con formato estándar utilizando los siguientes métodos.

  • to_date_string()
  • a_formatted_date_string()
  • to_time_string()
  • to_datetime_string()
  • to_day_datetime_string()

El módulo Pendulum también tiene la función format() & strftime() donde podemos especificar nuestro propio formato.

Ejemplo : 

Python3

import pendulum
# Creating new DateTime instance
dt = pendulum.datetime(2020, 11, 27, 12, 30, 15)
print(dt)
 
# Formatting date-time
dt.to_day_datetime_string()
formatted_str = dt.format('dddd Do [of] MMMM YYYY HH:mm:ss A')
print(formatted_str)
 
new_str = dt.strftime('%Y-%m-%d %H:%M:%S %Z%z')
print(new_str)

Producción : 

2020-11-27T12:30:15+00:00
Friday 27th of November 2020 12:30:15 PM
2020-11-27 12:30:15 UTC+0000

Analizar string hasta fecha y hora

 La función parse() se usa para analizar una string que tiene formatos de uso común para el objeto de fecha y hora. Si desea pasar una string no estándar o más complicada, utilice la función from_format(). Sin embargo, si desea que la biblioteca recurra al analizador dateutil, debe pasar strict=False.

Python3

import pendulum
dt = pendulum.parse('1997-11-21T22:00:00',
                    tz = 'Asia/Calcutta')
print(dt)
 
# parsing of non standard string
dt = pendulum.from_format('2020/11/21',
                          'YYYY/MM/DD')
 
print(dt)

Producción :

1997-11-21T22:00:00+05:30
2020-11-21T00:00:00+00:00

Duración: reemplazo de timedelta

La clase Duration hereda de la clase timedelta nativa. Sin embargo, su comportamiento es ligeramente diferente.

Ejemplo : 

Python3

import pendulum
time_delta = pendulum.duration(days = 2,
                               hours = 10,
                               years = 2)
print(time_delta)
 
# Date when i am writing this code is 2020-11-27.
print('future date =',
      pendulum.now() + time_delta)

Producción :

2 years 2 days 10 hours
future date = 2022-11-30T04:38:01.256888+05:30

Período de tiempo

Cuando resta una instancia de DateTime de otra o usa el método diff(), devolverá una instancia de Period. Hereda de la clase Duration con el beneficio adicional de que conoce las instancias que la generaron para que pueda dar acceso a más métodos y propiedades.

Ejemplo 1 :

Python3

import pendulum
starting = pendulum.datetime(2021, 1, 1)
ending = starting.add(hours = 10)
 
# subtracting date-time instances
# to ge a period instance
period = ending - starting
period.hours

Producción : 

10

Ejemplo 2: 

Python3

import pendulum
 
# You can create period instance
# by using the period() method
start = pendulum.datetime(2021, 1, 1)
end = pendulum.datetime(2021, 1, 31)
period = pendulum.period(start, end)
period.days

Producción : 

30

Publicación traducida automáticamente

Artículo escrito por tejalkadam18m y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *