Pythonは、日付と時刻を扱うための強力なツールを提供します。多くの場合、日付と時刻の文字列をdatetime
オブジェクトに変換して、より容易に操作および分析する必要があります。この記事では、この変換を実現するためのさまざまな方法を、柔軟性とエラー処理に焦点を当てて解説します。
目次
datetime.strptime()
の使用
datetime.strptime()
関数は、文字列からdatetime
への変換によく使用される方法です。2つの引数を取ります。
date_string
: 日付と時刻の情報を含む文字列。format
:date_string
内で日付と時刻がどのように表現されているかを指定するフォーマット文字列。
フォーマット文字列は、日付と時刻のさまざまな部分を表すディレクティブを使用します。いくつかの重要なディレクティブを以下に示します。
ディレクティブ | 意味 | 例 |
---|---|---|
%Y |
西暦年(世紀を含む) | 2024 |
%y |
西暦年(世紀を含まない) | 24 |
%m |
月(01-12) | 03 |
%d |
月の曜日(01-31) | 15 |
%H |
時(24時間制、00-23) | 14 |
%I |
時(12時間制、01-12) | 02 |
%p |
AM/PM | PM |
%M |
分(00-59) | 30 |
%S |
秒(00-59) | 00 |
%f |
マイクロ秒(000000-999999) | 123456 |
%A |
曜日名(完全) | Monday |
%a |
曜日名(略) | Mon |
%B |
月名(完全) | March |
%b |
月名(略) | Mar |
フォーマット文字列内のディレクティブの順序は、日付文字列内の順序と一致する必要があります。
from datetime import datetime
date_string = "2024-03-15 14:30:00"
format = "%Y-%m-%d %H:%M:%S"
datetime_object = datetime.strptime(date_string, format)
print(datetime_object) # 出力: 2024-03-15 14:30:00
代替変換方法
より複雑な、または標準的でない日付形式の場合、dateutil
などのライブラリを使用することを検討してください。
from dateutil import parser
date_string = "March 15th, 2024 2:30 PM"
datetime_object = parser.parse(date_string)
print(datetime_object)
堅牢なエラー処理
ValueError
例外を処理するために、常にtry-except
ブロックでstrptime
をラップしてください。
try:
datetime_object = datetime.strptime(date_string, format)
except ValueError as e:
print(f"日付文字列の変換エラー: {e}")
さまざまな日付と時刻の形式の処理
さまざまな入力形式の場合、strptime
またはdateutil.parser
を適用する前に、文字列を前処理するか、正規表現を使用して日付コンポーネントを抽出する必要がある場合があります。