どうも、nippa です。
本日は python の datetime に関してです。
時系列データで dataime を使うのですが、毎回使い方を忘れてしまい時間のロスが起きています。
この際ある程度まとめてしまって、この記事を参照しようと思います。
正式なドキュメントは
python 標準ライブラリ: datetime --- 基本的な日付型および時間型
を参考にしてください。
- 環境
- datetime ライブラリ
- strptime(): 文字列 → datetime 型
- strftime(): datetime 型 → 文字列
- timestamp(): datetime → timestamp
- fromtimestamp(): timestamp → datetime
- timezone の設定と確認
- timedelta
- 感想
環境
datetime ライブラリ
以下でライブラリを import できます。
import datetime
strptime(): 文字列 → datetime 型
形式: datetime.strptime(data_string, format)
strptime で datetime 型に変換できます。
例として、2020-11-07 21:20:00.0[+090000.0000]
を detatime 型に変換してみます。
time = datetime.datetime.strptime('2020-11-07 21:20:00.0[+090000.0000]', '%Y-%m-%d %H:%M:%S.%f[%z]') print(type(time)) # 出力 <class 'datetime.datetime'> print(time) # 出力 2020-11-07 21:20:00+09:00
書式コードは以下を参考にしてください。
Python 標準ライブラリ: datetime --- 基本的な日付型および時間型 strftime() と strptime() の書式コード
strftime(): datetime 型 → 文字列
形式:datetime.strftime(format)
strftime 関数で datetime 型から文字列に変換できます。
time = datetime.datetime.now() print(time.strftime('%Y-%m-%d %H:%M:%S.%f')) # 出力 2020-11-07 21:20:00.000000 print(time.strftime('%c')) # 出力 Fri Nov 7 21:20:00 2020
書式コードは以下を参考にしてください。
Python 標準ライブラリ: datetime --- 基本的な日付型および時間型 strftime() と strptime() の書式コード
timestamp(): datetime → timestamp
形式: datetime.timestamp()
time = datetime.datetime.strptime('2020-11-07 21:20:00.0[+090000.0000]', '%Y-%m-%d %H:%M:%S.%f[%z]') print(time.timestamp()) # 出力 1604751600.0
時間の計算ではタイムゾーンを考慮せずにできるので、重宝します。
fromtimestamp(): timestamp → datetime
形式:datetime.fromtimestamp(timestamp, tz=None)
timestamp = datetime.datetime.fromtimestamp(1604751600.0) print(timestamp) # 出力 2020-11-07 21:20:00
timezone の設定と確認
タイムゾーンの扱いをまとめておきます。
タイムゾーンの設定
形式:datetime.timezone(offset, name=None)
タイムゾーンの確認
形式:datetime.tzinfo
タイムゾーンの置き換え
形式:datetime.replace(tzinfo=[datetime.timezone])
JST = datetime.timezone(+datetime.timedelta(hours=9)) timestamp = datetime.datetime.fromtimestamp(1604751600.0, tz=JST) print(timestamp) # 出力 2020-11-07 21:20:00+09:00 print(timestamp.tzinfo) # 出力 UTC+09:00 # UTCの設定 UTC = datetime.timezone(+datetime.timedelta(hours=0)) timestamp = timestamp.replace(tzinfo=UTC) print(timestamp) #出力 2020-11-07 21:20:00+00:00 print(timestamp.tzinfo) # 出力 UTC
timedelta
時間幅、日付幅を指定するようなときに、利用します。
形式: datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
time = datetime.datetime.strptime('2020-11-07 21:20:00.0[+090000.0000]', '%Y-%m-%d %H:%M:%S.%f[%z]') one_hour_ago = time - datetime.timedelta(hours=1) print(one_hour_ago) # 出力 2020-11-07 20:20:00+09:00
感想
datetime のよく使うものをまとめました。datetime ライブラリのページでは詳細は確認できますので、足りない情報はそちらで確認いただければと思います。
これである程度、datetime について検索に時間をかけずに済むようになるようになるかと思います。
よく使う Python のライブラリは今後もまとめていきたいと思います。
ではでは、また次回。