少しだけ手こずったのでメモ
1.動作環境
・GoogleColaboratory
・OANDA API V20
2.やり方
どうやらOANDA APIで拾ってきた時刻はISO8601という規格だそうで。
売買した時刻を表示させたいと思って
日本時間で知りたいな~なんておもって少々はまった。
まず、OANDAからどんなデータが帰ってくるかというと、
trading_data=api.request(trades.OpenTrades(accountID=accountID))
trading_data["trades"][0]["openTime"]
上記のように売買した時刻がopenTimeに記載があります。
その中身は
'2020-01-09T10:28:23.567698657Z'
すごい細かくナノ秒くらいまでもってこれます。
しかしそこまで詳細な秒数は知らなくてもよいので
以下のようなコードで変換できました。
time=trading_data["trades"][0]["openTime"]
def iso_to_jstdt(iso_str):#ISO8601→JST変換関数
dt = None
split_timedate=iso_str.rsplit(".",8)#ここでマイクロ病以下を切り落とし
iso_str=split_timedate[0]
print(iso_str)
try:
dt = datetime.strptime(iso_str, '%Y-%m-%dT%H:%M:%S')
dt = pytz.utc.localize(dt).astimezone(pytz.timezone("Asia/Tokyo"))
except ValueError:
try:
dt = datetime.strptime(iso_str, '%Y-%m-%dT%H:%M:%S')
dt = dt.astimezone(pytz.timezone("Asia/Tokyo"))
except ValueError:
print("変換できてない")
pass
if dt is None:
df=""
return df
return dt.strftime('%Y/%m/%d %H:%M:%S') #文字列に再変換
Jtime=iso_to_jstdt(trading_data["trades"][0]["openTime"]) #ISO8601を入れる
print(Jtime)
2020-01-09T10:28:23
2020/01/09 19:28:23
きれいに日本時間にしてくれました!
マイクロ秒以下を切り落としてるけどそこはいらない!!!!