0
0

More than 3 years have passed since last update.

Google colab OANDA APIで取得した時刻(ISO8601)を日本時間に変換する(JST)

Posted at

少しだけ手こずったのでメモ

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

きれいに日本時間にしてくれました!
マイクロ秒以下を切り落としてるけどそこはいらない!!!!

3.参考文献

https://qiita.com/estaro/items/2b7074839d2a5e883dc1

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0