Arrow module in Python

Arrow is a Python module for working with date and time. It offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps. It allows easy creation of date and time instances with timezone awareness.

Installation

The arrow module is installed with the following command:

pip install arrow

Features

  • User friendly.
  • Timezone-aware and UTC by default.
  • Timezone conversion.
  • Time frame ranging from microsecond to year.
  • Easy to use.
  • Formats and parses strings automatically.
  • Supports a growing list of contributed locales.

Getting UTC (Universal Time Coordinated) time.

In order to get current UTC time we use utcnow() method.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing arrow module
import arrow
  
# getting UTC time
utc_time = arrow.utcnow()
  
# printing the current UTC time
print('Current UTC Time is =', utc_time)

chevron_right


Output :

Current UTC Time is = 2020-02-28T18:06:39.228924+00:00

Getting Indian time.

In order to get current regional(Indian) time we use now() method.



filter_none

edit
close

play_arrow

link
brightness_4
code

# importing arrow module
import arrow
  
# getting current indian time
ind_time = arrow.now('Asia/Calcutta')
  
# printing the time
print('Current India Time =', ind_time)

chevron_right


Output :

Current India Time = 2020-02-28T23:40:07.112695+05:30

Parsing string to date

In order to parse the string into date format we use get() method.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing arrow module
import arrow
  
# date in string format
s ='2020-02-02 12:30:45'
  
  
# parsing string into date
date = arrow.get(s, 'YYYY-MM-DD HH:mm:ss')
  
# printing the date
print(date)

chevron_right


Output :

2020-02-02T12:30:45+00:00

Unix time

Unix time is a system for describing a point in time. It is the number of seconds that have elapsed since the Unix epoch, that is the time 00:00:00 UTC on 1 January 1970, minus leap seconds.

  • timestamp() method is used to get unix time.
  • fromtimestamp() method used to convert the Unix time back to the arrow date object.
filter_none

edit
close

play_arrow

link
brightness_4
code

# importing arrow module
import arrow
  
# getting current utc time
utc = arrow.utcnow()
  
# printing the unix time
print(utc)
  
# getting unix time
unix_time = utc.timestamp
  
# printing unix time
print(unix_time)
  
# converting unix time into arrow date object
date = arrow.Arrow.fromtimestamp(unix_time)
  
# printing arrow dateobject
print(date)

chevron_right


Output :

2020-03-04T13:33:15.041536+00:00
1583328795
2020-03-04T19:03:15+05:30

Arrow instance from datetime

An instance of the arrow module can also be created from the DateTime module. Consider the below example for a better understanding of the topic.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing arrow module
import arrow
  
# importing datetime from datetime module
from datetime import datetime
  
# geeting current time using datetime module
dt = datetime.now()
  
# creating arrow instance from datetime instance
arrow_dt = arrow.Arrow.fromdate(dt)
  
# printing datetime instance
print(dt)
  
# printing arrow instance
print(arrow_dt)

chevron_right


Output :

2020-03-04 19:16:04.317690
2020-03-04T00:00:00+00:00

Properties for getting individual datetime objects

if you want to get any object as an individual,here are some properties that can be used.

filter_none

edit
close

play_arrow

link
brightness_4
code

#import arrow module
import arrow
  
#Call datetime functions that return properties
a = arrow.utcnow()
print(a.time())
print(a.date())
  
#Get any datetime value
print(a.year)

chevron_right


Output :

datetime.time(19, 16, 04, 317690)
datetime.date(2020, 3, 4)
2020

Replace and Shift property

if you want to replace or shift any object as an individual,here are some properties that can be used.

filter_none

edit
close

play_arrow

link
brightness_4
code

#import arrow module
import arrow
  
# getting current utc time
a = arrow.utcnow()
  
# printing the unix time without alteration
print("without alteration: ",a)
  
# replacing only the hours to 5 and minutes to 30
b = a.replace(hour=5, minute=30)
print("with hours and minutes replaced: ",b)
  
# shifting forward in weeks
c = a.shift(weeks=+3)
print("with weeks shifted 3 forward: ",c)
  
# replacing only the timezone
d = a.replace(tzinfo='US/Pacific')
print("with timezone replaced: ",d)

chevron_right


Output :

without alteration: 2020-03-04T13:33:15.041536+00:00
with hours and minutes replaced: 2020-03-04T05:30:15.041536+00:00
with weeks shifted 3 forward: 2020-03-25T13:33:15.041536+00:00
with timezone replaced: 2020-03-04T13:33:15.041536-07:00

Humanized format

all the above properties and function outputs are more of a computer format but what if you wanted it to be more of a human form? for example: “an hour ago” or “2 hours ago”,here are some properties that can be used to achieve humanized format.

filter_none

edit
close

play_arrow

link
brightness_4
code

#import arrow module
import arrow
  
#Humanize to past
apast = arrow.utcnow().shift(hours=-1)
print(apast.humanize())
  
#humanize to future
present = arrow.utcnow()
afuture = present.shift(hours=3)
print(afuture.humanize(present))
  
#Indicate a specific time granularity
afuture = present.shift(minutes=73)
print(afuture.humanize(present, granularity="minute"))
print(afuture.humanize(present, granularity=["hour", "minute"]))

chevron_right


Output :

'an hour ago'
'in 3 hours'
'in 73 minutes'
'in an hour and 13 minutes'



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : kevadiyasmeet

Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.