Python で文字列を解析して日時を取得する方法 (strptime)

Python で文字列を日時オブジェクトに変換する方法を学びます。 strptime メソッドをマスターし、日付文字列を解析し、タイムゾーンを処理し、フォーマット エラーを防ぎます。

エディターでこのソリューションを試してください

概要

ユーザー フォームの送信の処理、Web データベースのスクレイピング、サーバー ログの解析、または CSV シートのインポートを行うアプリケーションを構築する場合、日付と時刻の情報を生のテキスト文字列 (例: 「2026-05-25 15:45」) として受け取ることがよくあります。文字列の計算、日付算術、並べ替えは実行できないため、文字列を Python 日時オブジェクトに解析する必要があります。

この変換の主なメソッドは「datetime.strptime(date_string, format_string)」です。名前は「文字列解析時間」の略です。この関数は、生の日付文字列とディレクティブ (年を表す `%Y`、月を表す `%m`、日を表す `%d` など) を含む書式テンプレートを受け取り、対応する日時オブジェクトを返します。

入力文字列が提供された形式テンプレートと正確に一致しない場合、Python は `ValueError` を発生させます。クラッシュを防ぐには、常に `strptime()` 操作を `try-excel` ブロックで囲みます。多様な非構造化日付入力を解析するアプリケーションの場合、「python-dateutil」のような外部ライブラリはパーサー検出の自動化に役立ちます。

コードと実行の出力

このスクリプトは、datetime.strptime を使用した日付文字列の解析、無効な入力の処理、および日付の差の計算を示します。

from datetime import datetime

# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"

parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)

# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
    datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
    print(f"\nParse Error: {e}")

# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())
端子出力
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18

Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25

段階的な実装

  • datetime モジュールから datetime クラスをインポートします。
  • 日付文字列の正確な構造 (日、月、区切り文字など) を特定します。
  • 適切なディレクティブ (%Y、%m、%d など) を使用して datetime.strptime(date_string, format_pattern) を呼び出します。
  • 解析ステートメントを try-excel ValueError ブロックでラップして、不正な形式の文字列を適切に処理します。

よくある質問

strftime と strptime の違いは何ですか?

strptime (文字列解析時間) は文字列を解析して日時オブジェクトを作成します。 strftime (文字列形式時刻) は、datetime オブジェクトを読み取り可能な文字列表現に形式設定します。

ISO 8601 日付文字列 (例: "2026-05-25T18:30:00Z") を解析するにはどうすればよいですか?

Python 3.7 以降では、組み込みの datetime.fromisoformat(string) 関数を使用できます。この関数は、手動の書式テンプレートを必要とせずに ISO 文字列を効率的に処理します。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。