DjangoBrothers BLOG ✍️

2019/12/15

このエントリーをはてなブックマークに追加
Python Django datetime

【Python】日時を文字列に変換・日時の文字列をdatetime型に変換(datetime/strftime/strptime)

Pythonで日付を扱う際には、標準ライブラリであるdatetimeモジュールを使うことが多いです。

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関数は日付の文字列オブジェクトを第一引数にとり、第二引数でその文字列から読み取る日時情報のフォーマットを指定します。適切なフォーマットを指定しないとエラーになるので気をつけてください。