Answers:
试试这个:
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
,那么以后需要做的就是this datetime.datetime.combine
。
date.today()
之前和date.today()
之后将返回不同的值。最好将值date.today()
赋予变量。
而不是使用时间尝试timedelta:
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
,...),但谁在乎呢?
您有两个datetime.time对象,因此您只需使用datetime.timedetla创建两个timedelta,然后像现在一样使用“-”操作数进行减法。以下是不使用datetime减去两次的示例方法。
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
different_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()
。