我有两个datetime.time值,exit而且enter我想做的事情如下:
duration = exit - enter
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
TypeError:不支持的操作数类型 - :'datetime.time'和'datetime.time
我该怎么做呢?一种可能的解决方案是将time变量转换为datetime变量,然后转换为子结构,但我相信你们必须有更好更清洁的方法.
gru*_*czy 79
试试这个:
from datetime import datetime, date
datetime.combine(date.today(), exit) - datetime.combine(date.today(), enter)
Run Code Online (Sandbox Code Playgroud)
combine 建立一个可以减去的日期时间.
ale*_*ine 39
使用:
from datetime import datetime, date
duration = datetime.combine(date.min, end) - datetime.combine(date.min, beginning)
Run Code Online (Sandbox Code Playgroud)
使用date.min更简洁,即使在午夜也可以使用.
date.today()如果第一次调用发生在23:59:59而下一次调用发生在00:00:00,则可能不会出现意外结果.
小智 19
而不是使用时间尝试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)
Run Code Online (Sandbox Code Playgroud)
您有两个 datetime.time 对象,因此您只需使用 datetime.timedetla 创建两个 timedelta,然后像现在一样使用“-”操作数减去。以下是不使用日期时间减去两次的示例方法。
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
Run Code Online (Sandbox Code Playgroud)
difference_delta是您的差异,您可以根据自己的原因使用它。
datetime.time不能这样做 - 但你可以使用datetime.datetime.now()
start = datetime.datetime.now()
sleep(10)
end = datetime.datetime.now()
duration = end - start
Run Code Online (Sandbox Code Playgroud)
datetime.time不支持这一点,因为以这种方式减去时间几乎没有意义.datetime.datetime如果您想这样做,请使用完整版.
python timedelta库应该可以满足您的需求。timedelta当减去两个datetime实例时,将返回A。
import datetime
dt_started = datetime.datetime.utcnow()
# do some stuff
dt_ended = datetime.datetime.utcnow()
print((dt_ended - dt_started).total_seconds())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100930 次 |
| 最近记录: |