In [1]:
import datetime

In [2]:
dt_jst = datetime.datetime(2018, 12, 31, 5, 0, 30, 1000,
                           tzinfo=datetime.timezone(datetime.timedelta(hours=9)))

In [3]:
print(dt_jst)


2018-12-31 05:00:30.001000+09:00

In [4]:
print(dt_jst.tzinfo)


UTC+09:00

In [5]:
dt_jst_to_utc = dt_jst.astimezone(datetime.timezone.utc)

In [6]:
print(dt_jst_to_utc)


2018-12-30 20:00:30.001000+00:00

In [7]:
print(dt_jst_to_utc.tzinfo)


UTC

In [8]:
dt_jst_to_m5h = dt_jst.astimezone(datetime.timezone(datetime.timedelta(hours=-5)))

In [9]:
print(dt_jst_to_m5h)


2018-12-30 15:00:30.001000-05:00

In [10]:
print(dt_jst_to_m5h.tzinfo)


UTC-05:00

In [11]:
dt_jst_to_utc_replace = dt_jst.replace(tzinfo=datetime.timezone.utc)

In [12]:
print(dt_jst_to_utc_replace)


2018-12-31 05:00:30.001000+00:00

In [13]:
print(dt_jst_to_utc_replace.tzinfo)


UTC

In [14]:
dt_jst_to_naive = dt_jst.replace(tzinfo=None)

In [15]:
print(dt_jst_to_naive)


2018-12-31 05:00:30.001000

In [16]:
print(dt_jst_to_naive.tzinfo)


None

In [17]:
dt_naive = datetime.datetime(2018, 12, 31, 5, 0, 30, 1000)

In [18]:
print(dt_naive)


2018-12-31 05:00:30.001000

In [19]:
print(dt_naive.tzinfo)


None

In [20]:
dt_naive_to_utc_replace = dt_naive.replace(tzinfo=datetime.timezone.utc)

In [21]:
print(dt_naive_to_utc_replace)


2018-12-31 05:00:30.001000+00:00

In [22]:
print(dt_naive_to_utc_replace.tzinfo)


UTC

In [23]:
dt_naive_to_jst_replace = dt_naive.replace(tzinfo=datetime.timezone(datetime.timedelta(hours=9)))

In [24]:
print(dt_naive_to_jst_replace)


2018-12-31 05:00:30.001000+09:00

In [25]:
print(dt_naive_to_jst_replace.tzinfo)


UTC+09:00

In [26]:
dt_naive_to_utc = dt_naive.astimezone(datetime.timezone.utc)

In [27]:
print(dt_naive_to_utc)


2018-12-30 20:00:30.001000+00:00

In [28]:
print(dt_naive_to_utc.tzinfo)


UTC