今回は python 日付を操作する際に用いられる datetime 型のデータを文字列に変換して出力する方法とその逆の文字列を datetime 型に変換する方法について解説いたします。
datetime 型の文字列変換は非常によく使うので、覚えやすいように丁寧に解説していきます。
datetime 型の文字列変換の方法
datetime オブジェクトには細かく分けると以下のようなオブジェクトがあります。
この中で文字列変換に使用できるのは datetime , date , time 型のオブジェクトとなります。
そしてこれらのオブジェクトには strftime という関数が用意されていますのでこれを使用して文字列への変換を行います。
strftime 関数の使い方
datetime オブジェクトには strftime 関数といった関数がありますので、これを使用して文字列への変換を行います。
使い方は以下の通りです。
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] であれば
とすることで出力できます。
文字列への変換例
よくある文字列への変換についていくつか代表例をご紹介します。
書式 | 書式コード | 出力例 |
---|---|---|
yyyy/mm/dd | %Y/%m/%d | 2023/06/01 |
yyyy.mm.dd | %Y.%m.%d | 2023.06.01 |
yyyy-mm-dd | %Y-%m-%d | 2023-06-01 |
yyyy/mm/dd HH:MM:SS | %Y/%m/%d %H:%M:%S | 2023/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 型のオブジェクトの関数の一つですので以下のように使うことができます。
利用方法は上記のように datetime オブジェクトからアクセスし、引数に変換したい文字列と、引数に指定した文字列に対応した書式コードを指定することで利用することができます。
例では文字列の書式が “%Y/%m/%d” なのでこれを引数に渡すことで変換することができます。
書式コードは上記に記載した表と全く一緒ですので利用の際はそちらをご参照ください。
いかがでしょうか。
文字列への変換はかなりの頻度で利用すると思いますので、すぐに利用できるようにすんなり覚えられたら幸いです。
今回はここまでです。
お疲れ様でした。
コメント