Open In App

Python pytz

Last Updated : 28 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Pytz brings the Olson tz database into Python and thus supports almost all time zones. This module serves the date-time conversion functionalities and helps user serving international client’s base. It enables time-zone calculations in our Python applications and also allows us to create timezone aware datetime instances. 

Installation

Python pytz module can be installed in the given way.

  • Using command line:
pip install pytz
  • Using tarball, run the following command as an administrative user:
python setup.py install
  • Using setuptools, the latest version will be downloaded for you from the Python package index:
easy_install --upgrade pytz

Converting timezones

By using astimezone() function we can convert the time into a different timezone.

Syntax: astimezone(t)

Parameter: t is time to be converted

Return: Converted timezone

Example: 

Python3




from datetime import datetime
from pytz import timezone
 
format = "%Y-%m-%d %H:%M:%S %Z%z"
 
# Current time in UTC
now_utc = datetime.now(timezone('UTC'))
print(now_utc.strftime(format))
 
# Convert to Asia/Kolkata time zone
now_asia = now_utc.astimezone(timezone('Asia/Kolkata'))
print(now_asia.strftime(format))


Output

2020-12-30 04:38:16 UTC+0000
 

2020-12-30 10:08:16 IST+0530

Python pytz attributes 

There are some attributes in pytz module to help us find the supported timezone strings. These attributes will help understand this module better.

  • all_timezones

It returns the list all the available timezones with pytz.all_timezones:

Python3




import pytz
 
 
print('the supported timezones by the pytz module:',
      pytz.all_timezones, '\n')


Output:

The above output is showing some values, because the list is very large.

  •  all_timezones_set

It returns the set of all the available timezones with pytz.all_timezones_set:

Python3




import pytz
 
 
print('all the supported timezones set:',
      pytz.all_timezones_set, '\n')


Output

The output order will be different in your system because it is a set.

  • Common_timezones, Common_timezones_set 

It returns the list and set of commonly used timezones with pytz.common_timezones, pytz.common_timezones_set.

Python3




import pytz
 
print('Commonly used time-zones:',
      pytz.common_timezones, '\n')
 
print('Commonly used time-zones-set:',
      pytz.common_timezones_set, '\n')


Output

  • country_names 

It returns a dict of country ISO Alpha-2 Code and country name as a key-value pair.

Python3




import pytz
 
 
print('country_names =')
 
for key, val in pytz.country_names.items():
    print(key, '=', val, end=',')
     
print('\n')
print('equivalent country name to the input code: =',
      pytz.country_names['IN'])


Output

country_names =AD = Andorra,AE = United Arab Emirates,TD = Chad,….,ZA = South Africa,ZM = Zambia,ZW = Zimbabwe,
equivalent country name to the input code:  India

  •  country_timezones

It returns a dictionary of country ISO Alpha-2 Code as key and list of supported time-zones for a particular input key (country code) as value

Python3




import pytz
 
 
print('country_timezones =')
 
for key, val in pytz.country_timezones.items():
    print(key, '=', val, end=',')
     
print('\n')
print('Time-zones supported by Antarctica =', pytz.country_timezones['AQ'])


Output

country_timezones =
AD = [‘Europe/Andorra’],AE = [‘Asia/Dubai’],AF = [‘Asia/Kabul’],…..,ZM = [‘Africa/Lusaka’],ZW = [‘Africa/Harare’],
Time-zones supported by Antarctica = [‘Antarctica/McMurdo’, ‘Antarctica/Casey’, ‘Antarctica/Davis’, ‘Antarctica/DumontDUrville’, ‘Antarctica/Mawson’, ‘Antarctica/Palmer’, ‘Antarctica/Rothera’, ‘Antarctica/Syowa’, ‘Antarctica/Troll’, ‘Antarctica/Vostok’]

Python pytz example

Given below are certain examples to show how this module can be put to use.

Example 1: creating datetime instance with timezone information.

Python3




# import the modules
import pytz
import datetime
from datetime import datetime
 
 
# getting utc timezone
utc = pytz.utc
 
# getting timezone by name
kiev_tz = pytz.timezone('Europe/Kiev')
print('UTC Time =', datetime.now(tz=utc))
print('IST Time =', datetime.now(tz=kiev_tz))


Output

UTC Time = 2020-12-15 08:23:17.063960+00:00
 

IST Time = 2020-12-15 10:23:17.063988+02:00

Example 2: 

Python3




# import the modules
import pytz
import datetime
 
 
d = datetime.datetime(1984, 1, 10, 23, 30)
 
# strftime method allows you to print a string
# formatted using a series of formatting directives
d1 = d.strftime("%B %d, %Y")
 
# isoformat method used for quickly generating
# an ISO 8601 formatted date/time
d2 = d.isoformat()
print(d1)
print(d2)


Output

January 10, 1984
 

1984-01-10T23:30:00

localize()

localize() is the correct function to use for creating datetime aware objects with an initial fixed datetime value. The resulting datetime aware object will have the original datetime value. This function is provided by python library. pytz.localize() is useful for making a naive timezone aware. it is useful when a front-end client sends a datetime to the backend to be treated as a particular timezone (usually UTC).

Example :

Python3




import pytz
import datetime
from datetime import datetime
 
 
# using localize() function, my system is on IST timezone
ist = pytz.timezone('Asia/Kolkata')
utc = pytz.utc
local_datetime = ist.localize(datetime.now())
 
print('IST Current Time =', local_datetime.strftime('%Y-%m-%d %H:%M:%S %Z%z'))
print('Wrong UTC Current Time =', utc.localize(
    datetime.now()).strftime('%Y-%m-%d %H:%M:%S %Z%z'))


Output

IST Current Time = 2020-12-15 08:49:56 IST+0530
 

Wrong UTC Current Time = 2020-12-15 08:49:56 UTC+0000

Example

Python3




from datetime import datetime
from pytz import timezone
 
 
# Set the time to noon on 2019-08-19
naive = datetime(2019, 8, 19, 12, 0)
 
# Let's treat this time as being in the UTC timezone
aware = timezone('UTC').localize(naive)
print(aware)


Output

2019-08-19 12:00:00+00:00



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads