في تطبيق django ، أرسل قائمة إدخال
كائنات للقالب. كل كائن إدخال
له بداية ، أوقات نهاية وهي قيم datetime.time (من TimeFields
في النموذج). أثناء سرد كائنات الإدخال ، أنا بحاجة إلى إظهار المدة لكل إدخال. يبدو أن وضع حقل المدة في النموذج متكرر منذ ذلك الحين ، كانت أوقات البدء والانتهاء موجودة بالفعل
نموذج
class Entry(models.Model):
title = models.CharField(unique=True,max_length=50)
starttime=models.TimeField(null=True)
endtime=models.TimeField(null=True)
...
نموذج
{% for entry in object_list %}
<tr>
<td> {{entry.title}} </td>
<td> {{entry.starttime}}</td>
<td> {{entry.endtime}}</td>
<td> want to show duration here </td>
{%endfor %}
1.
هل هناك أي مرشح يمكنه خذ قيمتين datetime.time وحساب المدة بالثواني.
على سبيل المثال ،
given
t1=datetime.time(2,30,50) and
t2=datetime.time(3,00,50)
should show
30 minutes
2.
أيضًا ، هل هناك مرشح ، يمكنه إظهار المدة في عدد معين من الدقائق كالساعة ، والدقائق إذا كانت قيمة الدقائق أكبر من 60
أي ،
if duration is 50 minutes ==> 50 minutes
if duration is 150 minutes ==> 2 hours,30 minutes
تحديث
def diff_in_time(start,end):
startdelta=datetime.timedelta(hours=start.hour,minutes=start.minute,seconds=start.second)
enddelta=datetime.timedelta(hours=end.hour,minutes=end.minute,seconds=end.second)
return (enddelta-startdelta).seconds/60
] عندما حاولت باستخدام بعض قيم الوقت النموذجية ، أعطتني النتيجة المتوقعة
#start 11:35:00 pm
#end 00:05:00 am
start= datetime.time(23,35,00)
end = datetime.time(00,05,00)
print diff_in_time(start,end)
==> 30 minutes
#start 00:35:00 am
#end 01:35:00 am
start= datetime.time(00,35,00)
end = datetime.time(01,35,00)
print diff_in_time(start,end)
==>60 minutes