pythonのdatetimeモジュールのstrftimeとstrptimeは名前も似ている上に、どちらも日付と文字列の変換になります。
このよく似た2つのメソッドで迷わなくなる覚え方と、実際の使い方をわかりやすく解説しています。
strftimeと strptimeの違いの覚え方
両者の違いは中間のアルファベットが「f」か「p」かです。この意味をどう解釈するかがわかれば簡単に覚えることができます。
覚え方としては、本来の意味に沿った方法と、意訳して簡単にする方法があります。
簡単な覚え方
・strftimeの「f」を「from」とみなします。
└ str from time:時間(日付)から文字列
・strptimeは「from」じゃないほうと覚えます。
└ str time:文字列から日付
本来の意味から覚える
・strftimeの「f」は「format」
└ format:書式を変える
└ 書式があるのは文字列のみ(日付データは定型)
string from time で日付型から文字列への変換となります。文字列⇒日付型
・strptimeの「p」は「purse」
└ purse:解析する
└ 解析が必要なのは文字列(日付データは型にはまっている)
string purse time で日付型を解析して文字列に変換するという意味になります。日付型⇒文字列
※「f」「p」の意味は諸説あり。しっくりきたものを紹介しています。気になる方はいろいろとググってみてください。
メソッド | 内容 | 意味 | 意味(フル) |
---|---|---|---|
strftime | 文字列⇒日付型 | format | string format time |
strptime | 日付型⇒文字列 | purse | string purse time |
strftimeと strptimeの実例
参考にstrftimeと strptimeの使用例を記載しておきます。
strftime
文字列型データ.strftime('%Y/%m/%d')
└ 例:「today.strftime(“%Y/%m/%d”)」
└ 「%Y」:西暦 (4桁) の 10進数(※%yは2桁)
└ 「%m」:0埋めした10進数の月(※%Mは分)
└ 「%d」:0埋めした10進数の日にち(%Dはmm/dd/yy)
import datetime as dt
today = dt.date.today() #出力:datetime.date(2020, 3, 22)
today.strftime("%Y/%m/%d")
#出力結果
#'2020/03/22'
出力結果を年、月、日にしたい場合は、strftimeを today.strftime(“%Y年%m月%日”) とします。
出力結果の型は文字列です。(type(today.strftime(“%Y/%m/%d”)) ⇒ str)
(参考)日付のフォーマット(表示書式)を変更する方法|strftimeとformatの使い方を実例でわかりやすく解説
strptime
datetime.datetime.strptime('A','B')
└ datetime.datetime.strptime()はワンセット
└A:文字列(str)
└B:文字列の書式
A:「2019-1-9」
B:「%Y-%m-%d」
dt.datetime.strptime('2019-1-9','%Y-%m-%d')
#出力
datetime.datetime(2019, 1, 9, 0, 0)
※変数として渡す場合はクオテーションは不要です。
strptimeメソッドは文字列になっている日付(A)が、どのように記載されているかを第二引数(B)で指定します。
例えば、 strptime(‘2019-1-9′,’%Y-%m-%d’) のように記載します。すると、 西暦4桁が2019、月が1、日付が9と認識し、変換してくれます。
datetimeは時間と分も指定できますが、指定しない場合は0とみなします。
(参考)文字列(str)データを日付に変更する方法|datetimeのstrptimeメソッドの使い方