何番煎じかわかりませんが、(タイムゾーン指定のない)シンプルな日時文字列から、入力と出力のタイムゾーンを指定して変換結果を得るコードのメモになります。
utcとの差分9時間を加減すれば処理できるのですが、ちゃんと?、'UTC'、'Asia/Tokyo'などとタイムゾーンを指定して変換したい場合のコードです。
日付関連の用語に慣れていないので、もし誤用などありましたらご指摘ください。
使っているライブラリ
import datetime
import pytz
JSTの日時文字列をUTCに変換する
# 文字列から(タイムゾーン情報を持たないnaiveな)datetimeオブジェクトを作成する
datetime_obj = datetime.datetime.strptime("2019-10-28 13:00:00", "%Y-%m-%d %H:%M:%S")
# 変換(JST -> UTC)
utc_datetime_obj = pytz.timezone('Asia/Tokyo').localize(datetime_obj).astimezone(pytz.timezone('UTC'))
# 結果を確認
print(utc_datetime_obj.strftime("%Y-%m-%d %H:%M:%S"))
# (9時間前の時刻が表示される)
# 2019-10-28 04:00:00
やっていること
datetimeオブジェクトを作成
日時文字列とその書式情報から、タイムゾーン情報を持たないnaiveなdatetimeオブジェクトを作成
datetime_obj = datetime.datetime.strptime("2019-10-28 13:00:00", "%Y-%m-%d %H:%M:%S")
datetimeオブジェクトにタイムゾーン情報を付与
作成したdatetimeオブジェクトに(JSTの)タイムゾーン情報を付与してawareなdatetimeオブジェクトを作成
jst_datetime_obj = pytz.timezone('Asia/Tokyo').localize(datetime_obj)
astimezoneでUTCに変換
utc_datetime_obj = jst_datetime_obj.astimezone(pytz.timezone('UTC'))
(逆) UTCの日時文字列をJSTに変換する
# この文字列をUTCに見立てて処理する
# 文字列から(タイムゾーン情報を持たないnaiveな)datetimeオブジェクトを作成する
datetime_obj = datetime.datetime.strptime("2019-10-28 13:00:00", "%Y-%m-%d %H:%M:%S")
# 変換(UTC -> JST)
jst_datetime_obj = pytz.timezone('UTC').localize(datetime_obj).astimezone(pytz.timezone('Asia/Tokyo'))
# 確認
print(jst_datetime_obj.strftime("%Y-%m-%d %H:%M:%S"))
# (9時間後の時刻が表示される)
# 2019-10-28 22:00:00