在forloop上添加+1小时到datetime.time()django

时间:2018-04-21 12:34:47

标签: python django

我有这样的代码,我想检查加班的时间范围并加总。

目前,我正在使用此代码尝试out.hour+1,但无效。


    overtime_all = 5
    overtime_total_hours = 0
    out = datetime.time(14, 30)

    while overtime_all > 0:
        overtime200 = object.filter(time__range=(out, out.hour+1)).count()
        overtime_total_hours = overtime_total_hours + overtime200
        overtime_all -=1

    print overtime_total_hours

如何在每个循环中添加1小时?...

2 个答案:

答案 0 :(得分:1)

Timedelta(来自datetime)可用于递增或递减datatime个对象。不幸的是,它不能直接与datetime.time个对象组合。

如果time列中存储的值为datetime个对象,则可以使用它们(例如:my_datetime + timedelta(hours=1))。如果它们是time个对象,您需要考虑它们是否代表某个时刻(在这种情况下,它们应该转换为datetime个对象)或持续时间(在这种情况下,它可能是更容易将其存储为表示总分钟数的整数,并对整数执行所有操作。

答案 1 :(得分:1)

我现在找到了解决方案,这是有效的。


    overtime_all = 5
    overtime_total_hours = 0
    out = datetime.time(14, 30)

    while overtime_all > 0:
        overtime200 = object.filter(time__range=(out,datetime.time(out.hour+1, 30))).count()
        overtime_total_hours = overtime_total_hours + overtime200
        overtime_all -=1

    print overtime_total_hours

我确实将out.hour+1更改为datetime.time(out.hour+1, 30)其工作正常,但我不知道是否有更紧凑/最佳解决方案。

谢谢你们的回答。