web-dev-qa-db-ja.com

Python 3.4でdatetime.timeをdatetime.timedeltaに変換します

2つの「期間」を変換しようとしていますが、1つはdatetime.timedeltaで、もう1つはdatetime.timeであるため、現在TypeErrorを受け取っています。

TypeError: unorderable types: datetime.time() <= datetime.timedelta()

datetime.timedatetime.timedeltaに変換する効率的な方法は何ですか?

docs を確認しましたが、これら2つのタイプを変換するための組み込みメソッドはありません。

8
Rob Murray

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()を使用しないでください。

15
Martijn Pieters

これが私が見つけた1つの解決策ですが、必ずしも効率的ではありません。

import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)

ここで、xdatetime.timeオブジェクト。

5
Rob Murray