Python strptime()
Python strptime()
この記事では、(例を使用して) 文字列から日時オブジェクトを作成する方法を学習します。
ビデオ:Python での日付と時刻
strptime()
メソッドは、指定された文字列から日時オブジェクトを作成します。
注: datetime
は作成できません すべての文字列からのオブジェクト。文字列は特定の形式である必要があります。
例 1:文字列から日時オブジェクトへ
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type of date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type of date_object =", type(date_object))
プログラムを実行すると、出力は次のようになります:
date_string = 21 June, 2018 type of date_string = <class 'str'> date_object = 2018-06-21 00:00:00 type of date_object = <class 'datetime.datetime'>
strptime() の仕組み
strptime()
クラス メソッドは 2 つの引数を取ります:
- 文字列 (日時に変換されるもの)
- 形式コード
使用される文字列とフォーマット コードに基づいて、メソッドは同等の datetime
を返します。 オブジェクト。
上記の例では:
ここで、
%d
- 日を表します。 例: 01、02、...、31%B
- 月の完全な名前。 例: 1 月、2 月など%Y
- 4 桁の年。 例: 2018 年、2019 年など
例 2:文字列から日時オブジェクトへ
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
プログラムを実行すると、出力は次のようになります:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
フォーマット コード リスト
以下の表は、使用できるすべての形式コードを示しています。
ディレクティブ | 意味 | 例 |
%a | 曜日の略称。 | 日、月、... |
%A | 完全な曜日名 | 日曜日、月曜日、... |
%w | 10 進数としての平日。 | 0, 1, ..., 6 |
%d | 0 で埋められた 10 進数としての日。 | 01、02、...、31 |
%-d | 10 進数としての日。 | 1, 2, ..., 30 |
%b | 月の略称。 | 1 月、2 月、...、12 月 |
%B | 完全な月の名前 | 1 月、2 月、... |
%m | ゼロで埋められた 10 進数としての月。 | 01、02、...、12 |
%-m | 10 進数としての月。 | 1, 2, ..., 12 |
%y | 0 で埋められた 10 進数としての世紀のない年。 | 00、01、...、99 |
%-y | 10 進数としての世紀のない年。 | 0, 1, ..., 99 |
%Y | 世紀を 10 進数として表した年。 | 2013年、2019年など |
%H | 時間 (24 時間制) を 0 で埋めた 10 進数で表します。 | 00、01、...、23 |
%-H | 10 進数としての時間 (24 時間制)。 | 0, 1, ..., 23 |
%I | 時間 (12 時間制) をゼロで埋めた 10 進数として表します。 | 01、02、...、12 |
%-I | 10 進数としての時間 (12 時間制)。 | 1, 2, ... 12 |
%p | ロケールの AM または PM。 | 午前、午後 |
%M | ゼロで埋められた 10 進数としての分。 | 00、01、...、59 |
%-M | 10 進数としての分。 | 0, 1, ..., 59 |
%S | 0 で埋められた 10 進数としての 2 番目。 | 00、01、...、59 |
%-S | 10 進数としての秒。 | 0, 1, ..., 59 |
%f | 10 進数としてのマイクロ秒。左側にゼロが埋め込まれます。 | 000000 - 999999 |
%z | +HHMM または -HHMM 形式の UTC オフセット | |
%Z | タイムゾーン名。 | |
%j | 0 で埋められた 10 進数としての年間通算日 | 001, 002, ..., 366 |
%-j | 10 進数としての年間通算日 | 1, 2, ..., 366 |
%U | 年の週番号 (週の最初の日としての日曜日)。新年の最初の日曜日より前のすべての日は、第 0 週と見なされます。 | 00、01、...、53 |
%W | 年の週番号 (月曜日を週の最初の日とする)。新年の最初の月曜日より前のすべての日は、第 0 週と見なされます。 | 00、01、...、53 |
%c | ロケールの適切な日付と時刻の表現。 | 2013 年 9 月 30 日月曜日 07:06:05 |
%x | ロケールの適切な日付表現。 | 2013 年 9 月 30 日 |
%X | ロケールの適切な時間表現。 | 07:06:05 |
%% | 文字通りの「%」文字。 | % |
strptime() の ValueError
strptime()
に渡された文字列 (第 1 引数) と書式コード (第 2 引数) 一致しない場合、ValueError
が返されます .例:
from datetime import datetime
date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
このプログラムを実行すると、エラーが発生します。
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
推奨読書: Python strftime()
Python