2つの「期間」を変換しようとしていますが、1つはdatetime.timedelta
で、もう1つはdatetime.time
であるため、現在TypeError
を受け取っています。
TypeError: unorderable types: datetime.time() <= datetime.timedelta()
datetime.time
をdatetime.timedelta
に変換する効率的な方法は何ですか?
docs を確認しましたが、これら2つのタイプを変換するための組み込みメソッドはありません。
datetime.time()
は期間ではありません、1日のポイントです。期間として解釈する場合は、深夜以降の期間に変換します。
_datetime.combine(date.min, timeobj) - datetime.min
_
デモ:
_>>> from datetime import datetime, date, time
>>> timeobj = time(12, 45)
>>> datetime.combine(date.min, timeobj) - datetime.min
datetime.timedelta(0, 45900)
_
そもそもdatetime.time()
オブジェクトを取得する方法を調べる必要があるかもしれませんが、おそらく、入力データからtimedelta()
へのより短いパスがありますか?たとえば、期間にdatetime.time.strptime()
を使用しないでください。
これが私が見つけた1つの解決策ですが、必ずしも効率的ではありません。
import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)
ここで、x
はdatetime.time
オブジェクト。