when I create a timezone aware datetime object for \'US/Eastern\'
and print it out, It shows as if my time zone is -4:56
instead of -4:00
<
Have a look at dateutil - you can safely construct the tz-aware datetime object using your originally intended method:
import datetime
import dateutil
obj = datetime.datetime(2020, 7, 1, 9, 30, tzinfo=dateutil.tz.gettz('US/Eastern'))
print(obj)
# 2020-07-01 09:30:00-04:00
In Python 3.9, there will be zoneinfo as part of the standard lib for that task.
It is mentioned in the docs that constructing datetime objects doesn't work this way.
You are supposed to do this:
from datetime import datetime
from pytz import timezone
eastern = timezone('US/Eastern')
obj = eastern.localize(datetime(2020, 7, 1, 9, 30))
>>> obj
datetime.datetime(2020, 7, 1, 9, 30, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)
>>> print(obj)
2020-07-01 09:30:00-04:00