计算两个TimeField的时差,可以通过django内置的时间计算模块datetime以及timedelta实现。下面是具体步骤:
- 从django.utils中导入datetime模块。
from django.utils import datetime
- 定义两个TimeField类型的时间变量time1和time2,注意这个时间类型必须是24小时制。
time1 = datetime.datetime.strptime('17:30', '%H:%M').time()
time2 = datetime.datetime.strptime('18:40', '%H:%M').time()
- 计算时间差,使用timedelta进行计算,计算时差的单位为秒(seconds)。
delta = datetime.datetime.combine(datetime.date.today(), time2) - datetime.datetime.combine(datetime.date.today(), time1)
seconds = delta.seconds
- 进行时间差格式化输出。如果只需要输出时差的分钟数,可以使用divmod函数。
minutes, seconds = divmod(seconds, 60)
print("时间差为{}分钟{}秒".format(minutes, seconds))
示例一:
from django.utils import datetime
time1 = datetime.datetime.strptime('13:30', '%H:%M').time()
time2 = datetime.datetime.strptime('14:45', '%H:%M').time()
delta = datetime.datetime.combine(datetime.date.today(), time2) - datetime.datetime.combine(datetime.date.today(), time1)
seconds = delta.seconds
minutes, seconds = divmod(seconds, 60)
print("时间差为{}分钟{}秒".format(minutes, seconds))
输出结果为:时间差为75分钟0秒
示例二:
from django.utils import datetime
time1 = datetime.datetime.strptime('23:50', '%H:%M').time()
time2 = datetime.datetime.strptime('01:45', '%H:%M').time() # 跨天了
delta = datetime.datetime.combine(datetime.date.today(), time2) - datetime.datetime.combine(datetime.datetime.now().date(), time1)
seconds = delta.seconds
minutes, seconds = divmod(seconds, 60)
print("时间差为{}分钟{}秒".format(minutes, seconds))
输出结果为:时间差为115分钟0秒
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django如何计算两个TimeField的时差 - Python技术站