概要(というか経緯)
時刻の足し引きにはdatetime.timedeltaを使うようですが、
datetime.time型とdatetime.timedelta型を+,-でつないだところ以下のエラーになってしまったので、
対処を調べました。
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.timedelta'
エラーの原因と対処
pythonのdatetimeには、日付を表すdate型と時刻を表すtime型、両方を表すdatetime型がある。
timedeltaはdatetime型を元に計算するので、date型、time型はまずdatetime型への変換が必要
変換にはclassmethod datetime.combine()を使う。
時刻の足し算引き算をするコード
import datetime
basetime = datetime.time(23, 59, 00)
# 23時59分の一分後
dt1 = datetime.datetime.combine(datetime.date.today(), basetime) + datetime.timedelta(minutes=1)
# 23時59分の1秒前
dt2 = datetime.datetime.combine(datetime.date.today(), basetime) - datetime.timedelta(seconds=1)
print(dt1.strftime("%H:%M:%S"))
print(dt2.strftime("%H:%M:%S"))
※コードの中では仮の日付としてdatetime.date.today()を利用していますが、うるう秒の入る日にどうなるかわからないので、適当な日付にしたほうが良いです。
output
00:00:00
23:58:59