2019/12/15
Python Django datetime【Python】日時を文字列に変換・日時の文字列をdatetime型に変換(datetime/strftime/strptime)
Pythonで日付を扱う際には、標準ライブラリであるdatetime
モジュールを使うことが多いです。
今回は、datetime型のオブジェクトを整形して文字列型に変換する方法と、その逆で、日付を表す文字列型のオブジェクトをdatetime型に変換する方法を紹介します。
datetime型を文字列に変換する(strftime)
datetime型のオブジェクトをprintするだけだと、あまり見栄えが良くありません。
datetime型をそのままprintする
import datetime
time = datetime.datetime.now()
print(time)
結果
2019-12-15 14:10:23.849831
Webサービスなどで実際にユーザーに日付を表示する際には、以下のようにstrftime
関数を使うことで、フォーマットを整形することができます。
文字列に変換し、フォーマットを決める
import datetime
time = datetime.datetime.now()
str_time = time.strftime('%Y/%m/%d %H:%M:%S')
print(str_time)
結果
2019/12/15 14:10:23
%Y
や%H
などは、日時に対応するフォーマットコードで、条件に応じて様々なフォーマットが用意されています。詳しくは公式ドキュメントに表になっています。
文字列をdatetime型に変換する(strptime)
逆に、文字列の日時情報をdatetime型として取り込んで、Pythonのスクリプト上で処理したいこともあります。 その際には、特定のフォーマットからどのように日時情報を読み取るかを指定する必要があります。
文字列に変換し、フォーマットを決める
import datetime
str_time = '2019/12/15 14:10:23'
time = datetime.datetime.strptime(str_time, '%Y/%m/%d %H:%M:%S')
>>> time
>>> datetime.datetime(2019, 12, 15, 14, 10, 23)
きちんとdatetime型のオブジェクトとして取り込まれているのがわかるかと思います。
strptime
関数は日付の文字列オブジェクトを第一引数にとり、第二引数でその文字列から読み取る日時情報のフォーマットを指定します。適切なフォーマットを指定しないとエラーになるので気をつけてください。