Create datetime instance with timezone info

1
2
3
4
5
6
7
8
9
import datetime
import pytz
dt = datetime.datetime(2021, 1, 6, 0, 0, 0)
tz = pytz.timezone('Asia/Kolkata')
tzinfo_dt = tz.localize(dt)
tzinfo_dt

# output:
# datetime.datetime(2021, 1, 6, 0, 0, tzinfo=<DstTzInfo 'Asia/Kolkata' IST+5:30:00 STD>)

Note: Passing tzinfo in datetime is not recommended by pytz.

Convert datetime to different timezone

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import datetime
import pytz

#creating timezone aware datetime instance
dt = pytz.utc.localize(datetime.datetime.now())
# converting to IST
ist_dt = dt.astimezone(pytz.timezone('Asia/Kolkata'))
ist_dt
# output:
# datetime.datetime(2021, 1, 6, 9, 28, 57, 974939, tzinfo=<DstTzInfo 'Asia/Kolkata' IST+5:30:00 STD>)

us_east = dt.astimezone(pytz.timezone('US/Eastern'))
# output:
# datetime.datetime(2021, 1, 5, 23, 1, 49, 588549, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)