🐍 Python

strptime() で文字列を日時にパースする

strptime()はstrftime()の逆で、書式を指定して文字列をdatetimeオブジェクトに変換します。「string parse time」の略で、書式が文字列の実際の形式と一致していないと例外になります。

datetime.strptime(date_string, format)
# formatはstrftime()と同じディレクティブ(%Y, %m, %d等)を使う
from datetime import datetime

s = "2026-08-10 09:05:03"
parsed = datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
print(parsed)
# 2026-08-10 09:05:03
print(type(parsed))
# 
# 日本式の日付形式や、時刻を含まない文字列にも対応できる
from datetime import datetime

s2 = "10/08/2026"
parsed2 = datetime.strptime(s2, "%d/%m/%Y")
print(parsed2)
# 2026-08-10 00:00:00 ← 時刻を指定しないと00:00:00になる
# 存在しない日付(13月)はValueError
from datetime import datetime

try:
    datetime.strptime("2026-13-01", "%Y-%m-%d")
except ValueError as e:
    print("ValueError:", e)
# ValueError: time data '2026-13-01' does not match format '%Y-%m-%d'
# 書式と文字列の形式が合っていない場合もValueError
from datetime import datetime

try:
    datetime.strptime("not a date", "%Y-%m-%d")
except ValueError as e:
    print("ValueError:", e)
# ValueError: time data 'not a date' does not match format '%Y-%m-%d'
strptime()の引数
第1引数: date_string
パース対象の文字列
第2引数: format
文字列の形式を表すディレクティブ文字列。strftime()と共通の記法を使う
💡 AIコードレビュー観点:外部入力のパースはtry/exceptで囲む

AIが生成したコードでユーザー入力やCSV・APIレスポンスなど、形式が保証されない文字列をstrptime()に直接渡している場合、想定外のフォーマットが来るとValueErrorで処理が止まります。信頼できない入力に対してはtry/except ValueErrorで囲み、パースに失敗した場合の代替処理(エラーメッセージ表示やデフォルト値の使用)を用意しましょう。

← Python datetime クイックリファレンス一覧へ戻る / strftimeで日時を文字列に変換する →