Python が文字列を日時 datetime に変換する方法
胡金庫
2023年1月30日
このチュートリアルでは、Python が文字列 string
を datetime
オブジェクトに変換する方法を紹介し、次に一般的な時間形式変換を実装するコード例をリストします。
datetime.strptime()
文字列を datetime
に変換する
前のチュートリアルでは、datetime.strftime()
メソッドを使用して文字列形式で日時 datetime
を取得する方法を学習しました。ここでは、datetime.strptime()
メソッドを使用して、逆変換を実装します。2つのメソッド f
と p
の違いは、それぞれ format
と parse
に対応しています。
datetime.strptime()
メソッドは、指定された datetime
形式で入力文字列を解析し、解析が成功した場合、datetime
オブジェクトを返します。
この strptime()
方法を使用する基本的な例を以下に示します。
from datetime import datetime
datetime.strptime("2018-01-31", "%Y-%m-%d")
結果は
datetime.datetime(2018, 1, 31, 0, 0)
参照用に、文字列形式コードのディレクティブをここにリストします
指令 | 意味 | 例 |
---|---|---|
%a |
ロケールの省略名としての曜日。 | 日、月、…、土(en_US);だから、Mo、…、Sa(de_DE) |
%A |
ロケールのフルネームとしての曜日。 | 日曜日、月曜日、…、土曜日(en_US);ソンタグ、モンタグ、…、サムスタッグ(de_DE) |
%w |
10 進数としての曜日。0 は日曜日、6 は土曜日です。 | 0、1、…、6 |
%d |
ゼロが埋め込まれた 10 進数としての日付。 | 01、02、…、31 |
%b |
ロケールの省略名としての月。 | 1 月、2 月、…、12 月(en_US); 1 月、2 月、…、デズ(de_DE) |
%B |
ロケールのフルネームとしての月。 | 1 月、2 月、…、12 月(en_US); 1 月、2 月、…、12 月(de_DE) |
%m |
ゼロが埋め込まれた 10 進数としての月。 | 01、02、…、12 |
%y |
ゼロが埋め込まれた 10 進数としての世紀のない年。 | 00、01、…、99 |
%Y |
10 進数としての世紀を含む年。 | 0001、0002、…、2013、2014、…、9998、9999 |
%H |
ゼロが埋め込まれた 10 進数としての時間(24 時間制)。 | 00、01、…、23 |
%I |
ゼロが埋め込まれた 10 進数としての時間(12 時間制)。 | 01、02、…、12 |
%p |
AM または PM に相当するロケール。 | AM、PM(en_US); am、pm(de_DE) |
%M |
ゼロが埋め込まれた 10 進数としての分。 | 00、01、…、59 |
%S |
ゼロが埋め込まれた 10 進数としての秒。 | 00、01、…、59 |
%f |
左側にゼロが埋め込まれた 10 進数としてのマイクロ秒。 | 000000、000001、…、999999 |
%z |
±HHMM[SS](オブジェクトがナイーブである場合は、文字列を空にする) 形式の UTC オフセット。 | (空)、+ 0000、-0400、+ 1030 |
%Z |
タイムゾーン名(オブジェクトが単純な場合は空の文字列)。 | (空)、UTC、EST、CST |
%j |
ゼロが埋め込まれた 10 進数としての日付。 | 001、002、…、366 |
%U |
ゼロが埋め込まれた 10 進数としての年の週番号(週の最初の日は日曜日)。新しい年の最初の日曜日に先行するすべての日は、0 週目と見なされます。 | 00、01、…、53 |
%W |
10 進数としての年の週番号(週の最初の日は月曜日)。新しい年の最初の月曜日に先行するすべての日は、0 週目と見なされます。 | 00、01、…、53 |
%c |
ロケールの適切な日時表現。 | 火 8 月 16 日 21:30:00 1988(en_US); Di 16 Aug 21:30:00 1988(de_DE) |
%x |
ロケールの適切な日付表現。 | 88/16/88(なし); 08/16/1988(en_US); 16.08.1988(de_DE) |
%X |
ロケールの適切な時間表現。 | 21:30:00(en_US); 21:30:00(de_DE) |
%% |
リテラル '%' 文字。 |
% |
datetime.strptime()
の例
7-May-2013
フォーマット
from datetime import datetime
dateString = "7-May-2018"
dateFormatter = "%u-%b-%Y"
datetime.strptime(dateString, dateFormatter)
出力:
datetime.datetime(2013, 5, 1, 0, 0)
31/12/2018
フォーマット
from datetime import datetime
dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)
出力:
datetime.datetime(2013, 12, 31, 0, 0)
Mon, July 16 2018
フォーマット
from datetime import datetime
dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)
出力:
datetime.datetime(2018, 7, 16, 0, 0)
Monday, July 16, 2018 20:01:56
フォーマット
from datetime import datetime
dateString = "Monday, July 16, 2018 20:01:56"
dateFormatter = "%A, %B %d, %Y %H:%M:%S"
datetime.strptime(dateString, dateFormatter)
出力:
datetime.datetime(2018, 7, 16, 20, 1, 56)
著者: 胡金庫
関連記事 - Python String
- Python で文字列からコンマを削除する
- Python で文字列を変数名に変換する
- Python 文字列の空白を削除する方法
- Python で文字列から数字を抽出する
- Python 2 および 3 で文字列を小文字に変換する方法