【问题标题】:Django time field differenceDjango时域差异
【发布时间】:2015-10-13 17:09:41
【问题描述】:

我需要比较两个时间字段的值并计算总工作时间。

我的功能(我尝试过的)

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日期不太了解。你能帮我解决这个问题吗?谢谢。

【问题讨论】:

  • 能不能放个打印语句看看循环中time_sheetstimes的值是什么?
  • if time in times: 将始终返回 false,因为 times 是一个空列表 ([])。

标签: python django


【解决方案1】:

如果 time_sheets 具有唯一的时间数据,您的 if 语句将始终返回 false。我对你想在 for 循环中做什么感到困惑。也许您想检查时间是否不及时,因此您会得到未处理的时间,您可以使用 difft 函数,您可以将处理的时间附加到时间列表中。

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 2011-08-07
    • 2019-01-31
    • 1970-01-01
    • 2011-01-05
    • 2016-12-02
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多