回答:
これを試して:
from datetime import datetime, date
datetime.combine(date.today(), exit) - datetime.combine(date.today(), enter)
combine
減算できる日時を作成します。
datetime
exit
ので、名前を付けないでくださいexit
。
combine
私の方法をdatetime
モジュール: AttributeError: 'module' object has no attribute 'combine'
datetime
モジュールがあり、datetime
内部にオブジェクトがあります。内部のオブジェクトにはcombine
メソッドがあります。単純にインポートする場合datetime
(このように:)import datetime
、後で行う必要があるのはこれdatetime.datetime.combine
です。
date.today()
beforeとdate.today()
laterは異なる値を返します。date.today()
変数に値を与えることをお勧めします。
使用する:
from datetime import datetime, date
duration = datetime.combine(date.min, end) - datetime.combine(date.min, beginning)
使用date.min
は少し簡潔で、真夜中でも機能します。
これはdate.today()
、最初の呼び出しが23:59:59に発生し、次の呼び出しが00:00:00に発生した場合に予期しない結果を返す可能性がある場合には当てはまりません。
タイムトライタイムデルタを使用する代わりに:
from datetime import timedelta
t1 = timedelta(hours=7, minutes=36)
t2 = timedelta(hours=11, minutes=32)
t3 = timedelta(hours=13, minutes=7)
t4 = timedelta(hours=21, minutes=0)
arrival = t2 - t1
lunch = (t3 - t2 - timedelta(hours=1))
departure = t4 - t3
print(arrival, lunch, departure)
datetime.time
この方法で時間を減算しても意味がないので、これはサポートしていません。datetime.datetime
これを行う場合は、フルを使用してください。
datetime.time
オブジェクトa
とb
同じ日のものであることがわかっていればb > a
、操作b - a
は完全な意味を持ちます。
arctan(0) = (0, pi, 2pi, ...)
がありますが、最初の値以降はこれらの値のいずれも気にしません。だから、4:00 - 20:00
ある8:00
-それは(もだ32:00
、56:00
、...)が、誰心配?
2つのdatetime.timeオブジェクトがあるので、datetime.timedetlaを使用して2つのtimedeltaを作成し、「-」オペランドを使用して今と同じように減算します。以下は、datetimeを使用せずに2回減算する方法の例です。
enter = datetime.time(hour=1) # Example enter time
exit = datetime.time(hour=2) # Example start time
enter_delta = datetime.timedelta(hours=enter.hour, minutes=enter.minute, seconds=enter.second)
exit_delta = datetime.timedelta(hours=exit.hour, minutes=exit.minute, seconds=exit.second)
difference_delta = exit_delta - enter_delta
差分は、あなたの理由で使用できる差分です。
datetime.min + delta
import datetime
def diff_times_in_seconds(t1, t2):
# caveat emptor - assumes t1 & t2 are python times, on the same day and t2 is after t1
h1, m1, s1 = t1.hour, t1.minute, t1.second
h2, m2, s2 = t2.hour, t2.minute, t2.second
t1_secs = s1 + 60 * (m1 + 60*h1)
t2_secs = s2 + 60 * (m2 + 60*h2)
return( t2_secs - t1_secs)
# using it
diff_times_in_seconds( datetime.datetime.strptime( "13:23:34", '%H:%M:%S').time(),datetime.datetime.strptime( "14:02:39", '%H:%M:%S').time())
datetime(1,1,1,0,0,0)
代わりに使用できますdate.today()
。