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 |
タイムゾーンの名前 (タイムゾーンがない場合には空文字列)。 | |
%% |
文字 “%” 自体の表現。 |
ピンバック: 【Python】日付フォーマット(datetime⇔文字列)