2015-10-13 92 views
0

我需要比較兩個時間字段值並計算總工作時間。Django時間字段差異

我的功能(我想什麼)

def difft(start,end): 
    a,b,c,d = start.hour, start.minute, start.second, start.microsecond 
    w,x,y,z = end.hour, end.minute, end.second, end.microsecond 
    delt = (w-a)*60 + (x-b) + (y-c)/60. + (z-d)/60000000 
    return delt + 1440 if delt<0 else delt 

def myfunction(): 
    attendance = StaffAttendance.objects.get(id=1) 

    time_sheets = []  

    t_times = TimeSheet.objects.filter(staff_attendance=attendance,is_deleted=False).order_by("time") 
    for t in t_times: 
     time_sheets.append(t.time) 

    #timesheets = [datetime.time(4, 0), datetime.time(6, 0)] 

    total_time = 0 
    times = [] 

    for time in time_sheets: 
     if time in times: 
      m = difft(times[0],time) 
      total_time += m 
      times = [] 
     else: 
      times.append(time) 

if time in times:這一塊總是返回False

如何計算django時間字段的總工作時間。我是Python/Django的新手。所以我對python日期不太瞭解。你能幫我解決這個問題嗎?謝謝。

+0

你可以放一個打印語句來看看'time_sheets'和'times'的值在循環中嗎? – karthikr

+0

'if time in times:'總是會返回false,因爲'times'是一個空列表('[]')。 – Leistungsabfall

+0

[計算時間差]的可能重複(http://stackoverflow.com/questions/3426870/calculating-time-difference) – eykanal

回答

0

如果time_sheets具有唯一的時間數據,您的if語句將始終返回false。我很困惑你想在循環中做什麼。也許你想檢查時間不在時間,因爲你得到的時間沒有處理,你可以使用difft函數,你可以追加處理時間到時間表。