كيفية استبدال قيمتي datetime.time في قالب django ، وكيفية تنسيق المدة بالساعة والدقائق

في تطبيق 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
7
задан jimgardener 16 August 2011 в 19:39
поделиться