文字列からdatetimeへの変換
Pythonでは、文字列から日付や時刻を表すdatetime
オブジェクトへの変換は、datetime
モジュールのstrptime
関数を使用します。この関数は、指定したフォーマットの文字列を解析し、対応するdatetime
オブジェクトを生成します。
以下に具体的なコードを示します。
from datetime import datetime
# 文字列
date_string = "2024-03-12 22:00:00"
# 文字列からdatetimeオブジェクトへ変換
dt = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(dt) # 出力: 2024-03-12 22:00:00
この例では、"%Y-%m-%d %H:%M:%S"
というフォーマットを指定しています。これは、"2024-03-12 22:00:00"
という形式の文字列を解析するためのものです。%Y
は4桁の年、%m
は2桁の月、%d
は2桁の日、%H
は時間、%M
は分、%S
は秒をそれぞれ表します。
このように、strptime
関数を使うことで、様々な形式の文字列からdatetime
オブジェクトへの変換が可能です。ただし、文字列の形式とstrptime
関数のフォーマットは一致していなければなりません。それぞれの要素(年、月、日、時間、分、秒)の位置や、区切り文字が一致していることを確認してください。
datetimeから文字列への変換
Pythonでは、datetime
オブジェクトから文字列への変換は、strftime
関数を使用します。この関数は、指定したフォーマットに従ってdatetime
オブジェクトを文字列に変換します。
以下に具体的なコードを示します。
from datetime import datetime
# 現在の日時
now = datetime.now()
# datetimeオブジェクトから文字列へ変換
date_string = now.strftime("%Y-%m-%d %H:%M:%S")
print(date_string) # 出力例: "2024-03-12 22:00:00"
この例では、"%Y-%m-%d %H:%M:%S"
というフォーマットを指定しています。これは、"2024-03-12 22:00:00"
という形式の文字列を生成するためのものです。%Y
は4桁の年、%m
は2桁の月、%d
は2桁の日、%H
は時間、%M
は分、%S
は秒をそれぞれ表します。
このように、strftime
関数を使うことで、datetime
オブジェクトから様々な形式の文字列への変換が可能です。ただし、生成したい文字列の形式とstrftime
関数のフォーマットは一致していなければなりません。それぞれの要素(年、月、日、時間、分、秒)の位置や、区切り文字が一致していることを確認してください。
strftimeとstrptimeの書式コード
Pythonのstrftime
関数とstrptime
関数では、日付や時刻を表す文字列とdatetime
オブジェクトの相互変換を行います。その際に使用する書式コードは以下の通りです。
%Y
: 4桁の年を表します(例: 2024)%m
: 2桁の月を表します(例: 03)%d
: 2桁の日を表します(例: 12)%H
: 2桁の時間(24時間制)を表します(例: 22)%M
: 2桁の分を表します(例: 00)%S
: 2桁の秒を表します(例: 00)
これらの書式コードを組み合わせることで、様々な形式の日付や時刻を表す文字列とdatetime
オブジェクトの相互変換が可能です。
例えば、"%Y-%m-%d %H:%M:%S"
という書式を指定すれば、"2024-03-12 22:00:00"
という形式の文字列とdatetime
オブジェクトの相互変換ができます。
- ただし、文字列の形式と書式コードは一致していなければなりません。それぞれの要素(年、月、日、時間、分、秒)の位置や、区切り文字が一致していることを確認してください。また、
strptime
関数は厳密に文字列を解析しますので、指定した書式に一致しない文字列を解析しようとするとエラーが発生します。この点には注意が必要です。 -
Python公式ドキュメンテーション, “8.1.7. strftime() and strptime() Behavior”, https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior
日付と時刻の計算
Pythonのdatetime
モジュールを使用すると、日付や時刻の計算も可能です。具体的には、日付や時刻の加算、減算、差分の計算などが行えます。
以下に具体的なコードを示します。
from datetime import datetime, timedelta
# 現在の日時
now = datetime.now()
print("現在の日時:", now)
# 5日後の日時
five_days_later = now + timedelta(days=5)
print("5日後の日時:", five_days_later)
# 2時間30分前の日時
two_and_half_hours_ago = now - timedelta(hours=2, minutes=30)
print("2時間30分前の日時:", two_and_half_hours_ago)
# 2つの日時の差分
diff = five_days_later - now
print("差分:", diff)
この例では、timedelta
関数を使用して、日数(days
)、時間(hours
)、分(minutes
)などを指定しています。timedelta
関数は、指定した期間を表すオブジェクトを生成します。このオブジェクトをdatetime
オブジェクトに加算または減算することで、日付や時刻の計算を行うことができます。
また、2つのdatetime
オブジェクトの差分を計算すると、その結果はtimedelta
オブジェクトとなります。このtimedelta
オブジェクトから、日数(days
)、秒数(seconds
)、マイクロ秒数(microseconds
)などを取得することができます。
このように、Pythonのdatetime
モジュールを使用すると、日付や時刻の計算を簡単に行うことができます。ただし、datetime
オブジェクトは不変(immutable)なので、一度生成したdatetime
オブジェクト自体を変更することはできません。新しい日時を表すdatetime
オブジェクトを生成するためには、元のdatetime
オブジェクトにtimedelta
オブジェクトを加算または減算する必要があります。この点には注意が必要です。