【python】日付型を文字列にフォーマットして出力する方法と文字列を日付に変換する方法についてわかりやすく解説

今回は python 日付を操作する際に用いられる datetime 型のデータを文字列に変換して出力する方法とその逆の文字列を datetime 型に変換する方法について解説いたします。

datetime 型の文字列変換は非常によく使うので、覚えやすいように丁寧に解説していきます。

スポンサーリンク
目次

datetime 型の文字列変換の方法

datetime オブジェクトには細かく分けると以下のようなオブジェクトがあります。

datetime 型 (日付と時刻)
date 型 (日付)
time 型 (時間)
timedelta 型 (時間の差分)

この中で文字列変換に使用できるのは datetime , date , time 型のオブジェクトとなります。
そしてこれらのオブジェクトには strftime という関数が用意されていますのでこれを使用して文字列への変換を行います。

strftime 関数の使い方

datetime オブジェクトには strftime 関数といった関数がありますので、これを使用して文字列への変換を行います。
使い方は以下の通りです。

date_str = dt_now.strftime(“書式コード”)

-例
date_str = dt_now.strftime(“%Y/%m/%d”)

→「2023/06/01」

datetime オブジェクト(上記ではdt_nowが datetime オブジェクト)の strtime 関数にアクセスし文字列へフォーマットする書式コードを指定することでフォーマット通りに文字列への変換が行えます。

上記では dt_now が 「2023/06/01 00:00:00」という時間を持っていた場合書式コード、「”%Y/%m/%d”」の指定で「2023/06/01」と表示されます。

このフォーマット形式は [%Y] のように書式コードを指定することで対応するフォーマットが呼び出されます。
書式コードと対応するフォーマットは以下の通りです。

書式コード説明表示例
%d月の日付を0埋めで表示(00~31)1
%mを0埋めで表示(01~12)06
%y西暦を下2桁を0埋めで表示(01~99)23
%Y西暦を4桁で表示2023
%D%d%m%y と指定したときと同じ表記06/01/23
%H時間を表示(24時間表記)20
%I時間を表示(12時間表記)8
%Mを表示(00~59)01
%Sを表示(00~59)01
%A曜日名(言語はロケールに依存)Thursday
%a曜日の短縮名(言語はロケールに依存)Thu
%B月名(言語はロケールに依存)June
%b月の短縮名(言語はロケールに依存)Jun

上記の書式コードを自分がフォーマットしたい形式に合わせて利用することで文字列へ好きなようにフォーマットすることができます。

例えばよくある [yyyy/mm/dd] であれば

dt_now.strftime(“%Y/%m/%d”)

とすることで出力できます。

文字列への変換例

よくある文字列への変換についていくつか代表例をご紹介します。

書式書式コード出力例
yyyy/mm/dd%Y/%m/%d2023/06/01
yyyy.mm.dd%Y.%m.%d2023.06.01
yyyy-mm-dd%Y-%m-%d2023-06-01
yyyy/mm/dd HH:MM:SS%Y/%m/%d %H:%M:%S2023/06/01 00:00:00
yyyy年mm月dd日 HH時MM分SS秒%Y年%m月%d日 %H時%M分%S秒2023年06月01日 00時00分00秒

上記のように書式コード以外の値は自分が好きなように入れることで好きなようにフォーマットすることができます。
他にフォーマットしたい形式があれば上記の内容を応用して作ってみてください。

文字列から Datetime 型への変換方法

文字列から日付に変換をする方法「strptime」という関数を利用することで Datetime 型に変換することができます。

strftime と殆ど似たような名称ですが、 [f] が日付から文字列[p] が文字列から日付に変換すると覚えておくといいでしょう。

strptime 関数の使い方

strptime 関数も datetime 型のオブジェクトの関数の一つですので以下のように使うことができます。

dt_obj= datetime.datetime.strptime(str,“文字列の書式コード”)

-例

str = “2023/06/01”
date_str =
datetime.datetime.strptime(str
, “%Y/%m/%d”)
→「2023-06-11 00:00:00」

利用方法は上記のように datetime オブジェクトからアクセスし、引数に変換したい文字列と、引数に指定した文字列に対応した書式コードを指定することで利用することができます。

例では文字列の書式が “%Y/%m/%d” なのでこれを引数に渡すことで変換することができます。

書式コードは上記に記載した表と全く一緒ですので利用の際はそちらをご参照ください。

いかがでしょうか。
文字列への変換はかなりの頻度で利用すると思いますので、すぐに利用できるようにすんなり覚えられたら幸いです。

今回はここまでです。
お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる