Python – Pendulum Module

17 Dec, 2020
The pendulum is one of the popular Python DateTime libraries to ease DateTime manipulation. It provides a cleaner and easier to use API. It simplifies the problem of complex date manipulations involving timezones which are not handled correctly in native datetime instances.
It inherits from the standard datetime library but provides better functionality.  So you can introduce Pendulums Datetime instances in projects which are already using built-in datetime class (except for the libraries that check the type of the objects by using the type function like sqlite3).
To install this module run this command into your terminal:
 pip install pendulum
Let’s see the simple examples:
You can create date-time instance using various methods like  datetime(), local(),now(),from_format().
Example : 
Python3
# import libraryimport pendulumdt = pendulum.datetime(2020, 11, 27)print(dt) #local() creates datetime instance with local timezonelocal = pendulum.local(2020, 11,27)print(local)print(local.timezone.name)
 
Output:
 
2020-11-27T00:00:00+00:00
2020-11-27T00:00:00+05:30
Asia/Calcutta
 
You can convert timezones using the in_timezone() method or using the timezone library directly. Refer following example for a better understanding
 
Note: UTC(Coordinated Universal Time) is the primary time standard by which the world regulates clocks and time.
 
Example :
 
Python3
# Importing libraryimport pendulum # Getting current UTC timeutc_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 timezonesydney_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)
Output :
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
For date-time manipulation, we can use the add() and subtract() methods. Each method returns a new DateTime instance.
Example :
Python3
# Importing the libraryimport pendulum# creating datetime instancedt = 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)
  
Output : 
 
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
 
We can convert date time to a standard formatted string using the following methods.
 
to_date_string()
to_formatted_date_string()
to_time_string()
to_datetime_string()
to_day_datetime_string()
 
Pendulum module also has format() & strftime() function where we can specify our own format.
 
Example : 
 
Python3
import pendulum# Creating new DateTime instancedt = pendulum.datetime(2020, 11, 27, 12, 30, 15)print(dt) # Formatting date-timedt.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)
Output : 
2020-11-27T12:30:15+00:00
Friday 27th of November 2020 12:30:15 PM
2020-11-27 12:30:15 UTC+0000
 parse() function is used to parse a string having commonly used formats to datetime object. If you want to pass a non-standard or more complicated string, then use the from_format() function. However, if you want the library to fall back on the dateutil parser, you have to pass strict=False.
Python3
import pendulumdt = pendulum.parse('1997-11-21T22:00:00',                    tz = 'Asia/Calcutta')print(dt) # parsing of non standard stringdt = pendulum.from_format('2020/11/21',                          'YYYY/MM/DD') print(dt)
Output :
1997-11-21T22:00:00+05:30
2020-11-21T00:00:00+00:00
The Duration class inherits from the native timedelta class. However, its behavior is slightly different.
Example : 
Python3
import pendulumtime_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)
Output :
2 years 2 days 10 hours
future date = 2022-11-30T04:38:01.256888+05:30
When you subtract a DateTime instance from another or use the diff() method, it will return a Period instance. It inherits from the Duration class with the added benefit that it is aware of the instances that generated it so that it can give access to more methods and properties.
Example 1 :
Python3
import pendulumstarting = pendulum.datetime(2021, 1, 1)ending = starting.add(hours = 10) # subtracting date-time instances# to ge a period instanceperiod = ending - startingperiod.hours
Output : 
10
Example 2 : 
Python3
import pendulum # You can create period instance# by using the period() methodstart = pendulum.datetime(2021, 1, 1)end = pendulum.datetime(2021, 1, 31)period = pendulum.period(start, end)period.days
Output : 
30
tejalkadam18m
python-modules
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Install PIP on Windows ?
Python Classes and Objects
Python OOPs Concepts
Introduction To PYTHON
How to drop one or multiple columns in Pandas Dataframe
Python | os.path.join() method
Check if element exists in list in Python
How To Convert Python Dictionary To JSON?
Python | Get unique values from a list
Python | datetime.timedelta() function