Pythonで文字列と時刻の相互変換

文字列から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オブジェクトを加算または減算する必要があります。この点には注意が必要です。

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です