python

【Python】datetimeオブジェクトに時間を足す方法をちゃちゃっと解説

今回はdatetimeオブジェクトに時間を足す方法を解説します。

datetimeモジュールについては以下参照。

https://docs.python.org/ja/3/library/datetime.html

datetimeオブジェクトに対して時刻を足す・引く方法

datetimeオブジェクトに対して時刻を足したり引いたりするにはtimedeltaを使用して経過時間を生成します。

サンプルコードはこちら

from datetime import datetime, timedelta

# 任意の時間(datetime型)
target_time = datetime.fromisoformat("2022-11-11T12:00:00+09:00")

# 30分の経過時間
calc_min = timedelta(minutes=30)

# 足し算
add_time = target_time + calc_min
print(add_time)

# 結果
# 2022-11-11 12:30:00+09:00

timedelta型に任意の経過時間を指定するのがポイントです。

timedelta型については以下を参照

https://docs.python.org/ja/3/library/datetime.html#timedelta-objects

任意のdatetime型を生成した後、datetime.timedeltaを使用して経過時間を生成します。

timedeltaの引数に指定したい時間を記載します。

指定できる引数は以下の通り

  • weeks
  • days
  • hours
  • minutes
  • seconds
  • milliseconds
  • microseconds

生成したtimedeltaとdatetime型は数値のように計算することで時刻を足すことができます。

もちろん、引き算も可能です。

from datetime import datetime, timedelta

# 任意の時間(datetime型)
target_time = datetime.fromisoformat("2022-11-11T12:00:00+09:00")

# 30分の経過時間
calc_min = timedelta(minutes=30)

# 引き算もできる
subtraction_time = target_time - calc_min
print(subtraction_time)

# 結果
# 2022-11-11 11:30:00+09:00

また、timedeltaには複数の引数をつけることもできます。

from datetime import datetime, timedelta

# 任意の時間(datetime型)
target_time = datetime.fromisoformat("2022-11-11T12:00:00+09:00")

# 引数に任意の時刻を複数指定できる
add_timedelta = timedelta(days=1, hours=3, minutes=30, seconds=20)
result_time = target_time + add_timedelta

print(result_time)
# 2022-11-12 15:30:20+09:00

まとめ

今回はdatetimeオブジェクトに時間を足す方法を解説しました。

まとめです。

  • 時刻を足すにはdatetime.timedelta()を使用して経過時間を生成する。
  • 経過時間とdatetime型のオブジェクトを足す・引くことで時間の操作を行う。

以上になります。