メモめもメモ

環境構築やプログラミングに関するメモ

Python3でISO 8601形式の時刻を取得する

現在のローカル時刻をタイムゾーン付きのISO 8601形式(YYYY-MM-DDThh:mm:ss±hh:mm)で取得します。 Python3.6からはnaiveなdatetimeオブジェクトもastimezone()を使えるようになりました。

import datetime

# --- python3.3以降 ---
utctime = datetime.datetime.now(datetime.timezone.utc) # awareな現在UTC時刻を取得
print(utctime.astimezone().isoformat()) # マイクロ秒有り
# 実行結果:2018-01-05T00:06:32.095958+09:00
print(utctime.replace(microsecond=0).astimezone().isoformat()) # マイクロ秒無し
# 実行結果:2018-01-05T00:06:32+09:00


# --- python3.6以降 ---
localtime = datetime.datetime.now() # naiveな現在ローカル時刻を取得
print(localtime.astimezone().isoformat()) # マイクロ秒有り
# 実行結果:2018-01-05T00:06:32.096458+09:00
print(localtime.replace(microsecond=0).astimezone().isoformat()) # マイクロ秒無し
# 実行結果:2018-01-05T00:06:32+09:00