日付文字列を datetime オブジェクトに変換するには、Pythonの datetime モジュールを使用できる。
年月日文字列を変換する場合
datetime.strptime() 関数を使用すると、指定した書式の日付文字列を datetime オブジェクトに変換可能。
日付文字列(YYYY-MM-DD)→datetimeのコード
from datetime import datetime
date_string = "2024-02-05"
date_format = "%Y-%m-%d"
# 日付文字列をdatetimeオブジェクトに変換
date_object = datetime.strptime(date_string, date_format)
print(date_object) # 変換されたdatetimeオブジェクトを出力
“%Y-%m-%d” は、日付文字列の形式を示しており、%Y は年、%m は月、%d は日を表している。
必要に応じて、日付文字列の形式に合わせて適切な書式指定子を使用すると良い。
時分秒まで含んだ文字列の場合
日付文字列に時分秒が含まれる場合でも、同様の方法で datetime オブジェクトに変換できる。
datetime.strptime() 関数を使用して、日付文字列の形式を指定し、適切な書式指定子を使って時分秒を含める。
日付文字列(YYYY-MM-DD hh:mm:ss)→datetimeのコード
from datetime import datetime
date_string = "2024-02-05 12:30:45"
date_format = "%Y-%m-%d %H:%M:%S"
# 日付文字列をdatetimeオブジェクトに変換
date_object = datetime.strptime(date_string, date_format)
print(date_object) # 変換されたdatetimeオブジェクトを出力
この例では、”%Y-%m-%d %H:%M:%S” の書式指定子を使用して、年月日時分秒を表す日付文字列を指定している。%H は時(24時間表記)、%M は分、%S は秒を表している。
必要に応じて、日付文字列の形式に合わせて書式指定子を変更する。
ミリ秒まで含んだ文字列の場合
strptime() メソッドを使用してミリ秒を含む日付文字列を変換する場合、ミリ秒の部分を %f 書式指定子で表す。
ミリ秒まで含んだ文字列→datetimeのコード
from datetime import datetime
date_string = "2024-02-05T12:30:45.123"
date_format = "%Y-%m-%dT%H:%M:%S.%f"
date_object = datetime.strptime(date_string, date_format)
print(date_object) # 変換されたdatetimeオブジェクトを出力
このコードでは、”%Y-%m-%dT%H:%M:%S.%f” の書式指定子を使用して、年月日時分秒ミリ秒を表す日付文字列を指定している。
%f はミリ秒を表し、ピリオド(.)とそれに続く数字をミリ秒の部分として解釈する。
ISO 8601フォーマット文字列の場合
ISO 8601形式の日付文字列を datetime オブジェクトに変換するには、datetime.fromisoformat() メソッドを使用します。
このメソッドはPython 3.7以降で利用可能、かつ3.11より前のバージョンはYYYY-MM-DD フォーマットのみをサポート。
ISO 8601形式→datetimeのコード
from datetime import datetime
date_string = "2024-02-05T12:30:45"
date_object = datetime.fromisoformat(date_string)
print(date_object) # 変換されたdatetimeオブジェクトを出力
このコードは、ISO 8601形式の日付文字列 “2024-02-05T12:30:45” を datetime オブジェクトに変換する。
fromisoformat() メソッドは、指定された文字列がISO 8601形式であることを前提としており、文字列がその形式に準拠していないとValueErrorになる。