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 リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python 文字列
Python で文字列操作をマスターします。明確な実行可能なコード例を使用して、文字列メソッド、スライス、連結、および書式設定のテクニックを学びます。
Python 文字列メソッドのチートシート
Python 文字列操作の完全なリファレンス ガイド。文字列プロパティの書式設定、検索、分割、置換、チェックをマスターします。
Python デコレータとデコレータ デザイン パターン: 主な違い
Python デコレータと従来のデコレータ デザイン パターンを比較します。定義時の関数ラッピングと、実行可能なコードを使用した実行時の動的オブジェクト構成の違いを理解します。