LoginSignup
1
1

More than 3 years have passed since last update.

pythonで文字列をdatetime型に変換する際のtimezone指定

Last updated at Posted at 2020-11-24

datetimeとtimezone

文字列からdatetime型にし、それをelasticsearchに登録するときに、
timezoneを指定しないとおかしなことになりました。
その際に行ったことの備忘録です。もっと楽なやり方あったら教えていただきたいです。

python3.7より前の場合

  • 文字列のフォーマット: YYYY-mm-dd HH:MM:SS+0900
    • +0900を末尾に追加 (UTC+9時間なので )
  • strptime()のフォーマット: %Y-%m-%d %H:%M:%S%z
    • %zがtimezoneに対応している
from datetime import datetime as dt

# 文字列
time_str = "2020-11-22 18:00:00+0900"
# timezoneを含んだdatetime型
time_dt = dt.strptime(time_str, '%Y-%m-%d %H:%M:%S%z')

print(time_dt.tzinfo)
# UTC+09:00

ptyhon3.7の場合

fromisoformat() を利用できます。
ISO 8601形式では末尾に+HH:MMまたは-HH:MMの形式でタイムゾーン情報を含んでいるので、
それに準ずる形の文字列を引数とします。

# 文字列
time_str = '2020-09-12 12:22:30+09:00'
# timezoneを含んだdatetime型
time_dt = dt.fromisoformat(time_str)

print(time_dt.tzinfo)
# UTC+09:00

参考サイト

Python, datetime, pytzでタイムゾーンを設定・取得・変換・削除 | note.nkmk.me

1
1
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
1
1