日付フォーマット(datetime⇔文字列)

datetime → 書式化文字列

>>> import datetime
>>> now = datetime.datetime.now()
>>> now.strftime("%Y/%m/%d %H:%M:%S")
'2012/01/01 20:29:39'

もしくは、新しい形式のformat関数を使ってもできる。

>>> "{0:%Y-%m-%d %H:%M:%S}".format(now)
'2012-10-07 08:15:03'

Python3.6以降からはフォーマット済み文字列リテラル(f-string)が使用可能なので、それを使うともっとかんたんにかける。

>>> f"{now:%Y-%m-%d %H:%M:%S}"
'2012-10-07 08:15:03'

その逆。書式化された日付文字列 → datetime

>>> import datetime
>>> datetime.datetime.strptime('2012/01/01 20:29:39', "%Y/%m/%d %H:%M:%S")
>>> datetime.datetime(2012, 1, 1, 20, 29, 39)

標準ライブラリではdatetimeモジュールのstrptimeが利用できるが、曜日や月の名称などでロケールに依存することがある。(Mon, 月など)
サードパーティ製モジュールのdatetutilを使って変換することもできる。

>>> import dateutil.parser
>>> dateutil.parser.parse('Tue Apr 10 04:54:42 JST 2007')
datetime.datetime(2007, 4, 10, 4, 54, 42, tzinfo=tzlocal())

フォーマット文字列はここを参照。
https://docs.python.org/ja/3/library/time.html#time.strftime

Directive Meaning Notes
%a ロケールにおける省略形の曜日名。
%A ロケールにおける省略なしの曜日名。
%b ロケールにおける省略形の月名。
%B ロケールにおける省略なしの月名。
%c ロケールにおける適切な日付および時刻表現。
%d 月の始めから何日目かを表す 10 進数 [01,31]。
%H (24 時間計での) 時を表す 10 進数 [00,23]。
%I (12 時間計での) 時を表す 10 進数 [01,12]。
%j 年の初めから何日目かを表す 10 進数 [001,366]。
%m 月を表す 10 進数 [01,12]。
%M 分を表す 10 進数 [00,59]。
%p ロケールにおける AM または PM に対応する文字列。 (1)
%S 秒を表す 10 進数 [00,61]。 (2)
%U 年の初めから何週目か (日曜を週の始まりとします)を表す
10 進数 [00,53]。年が明けてから最初の日曜日までの全ての
曜日は 0 週目に属すると見なされます。
(3)
%w 曜日を表す 10 進数 [0(日曜日),6]。
%W 年の初めから何週目か (日曜を週の始まりとします)を表す
10 進数 [00,53]。年が明けてから最初の月曜日までの全ての
曜日は 0 週目に属すると見なされます。
(3)
%x ロケールにおける適切な日付の表現。
%X ロケールにおける適切な時刻の表現。
%y 上 2 桁なしの西暦年を表す 10 進数 [00,99]。
%Y 上 2 桁付きの西暦年を表す 10 進数。
%Z タイムゾーンの名前 (タイムゾーンがない場合には空文字列)。
%% 文字 “%” 自体の表現。
関連記事:

日付フォーマット(datetime⇔文字列)” に1件のフィードバックがあります

  1. ピンバック: 【Python】日付フォーマット(datetime⇔文字列)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)