2016-10-02 90 views
0

我正在研究一个webapp,它应该用几个TimeField对象来计算。不,我坚持一点。如何将不同的TimeFields加在一起并从结果TimeField中减去DecimalField。 我试过不同的方法。例如,将TimeFields转换为str-object(这不起作用...)。有没有人知道我该如何处理这个问题?一个小暗示对我来说是一种乐趣。 谢谢!用多个TimeFields计算Django

回答

1

你是什么其实试图做? :)我必须猜测开始...

记住TimeField s进行datetime.time对象,这是“时钟时间”,即从午夜到午夜。 我假设你想将它们转换为可以在算术上处理的表单 - 自午夜以来的秒数可以正常工作。

为了简单起见,我在这里使用原始datetime.time对象,但是它与Django的TimeFields是一样的。

import datetime, decimal 

def to_seconds_after_midnight(t): 
    return t.hour * 60 * 60 + t.minute * 60 + t.second + (t.microsecond/1000000.) 

hourly_fee = decimal.Decimal(90) # for example. 

time_1 = datetime.time(13, 15) 
time_2 = datetime.time(16, 20) 

second_interval = decimal.Decimal(
    to_seconds_after_midnight(time_2) - 
    to_seconds_after_midnight(time_1) 
) 
print(hourly_fee * (second_interval/60/60)) # The output is 277.5. 

HTH :)