如何计算两个日期时间字段之间的小时数 odoo 9

How calculate number hours between two datetime field odoo 9

在我的示例中如何计算小时数:

((完成 - 开始) - 暂停)

在表单视图中格式化

开始 = 2017 年 2 月 10 日 07:55:54

完成 = 2017 年 2 月 10 日 16:50:54

暂停 = 1 小时(默认)


在控制台中日期时间看起来像这样:2017-02-10 07:55:54

需要这个 ==> 结果 = 07:55

How in @api.depends('start', 'finish') 
    def calculate_hours(self):
        #

您可以使用 timedelta 或 relative delta 来计算差异。在此之前,您必须转换为日期时间对象。这是我的做法

from openerp import api, fields
# if use relativedelta 
from dateutil.relativedelta import relativedelta 


@api.depends('start', 'finish')
def calculate_hours(self):
  for record in self:
    start_dt = fields.Datetime.from_string(record.start)
    finish_dt = fields.Datetime.from_string(record.finish)

    # using relativedelta 
    # pause time = 1, you could change to the number you desire. 
    pause = relativedelta(hours=1)
    difference = relativedelta(finish_dt, start_dt) - pause 
    # from relative delta you could get hours or minutes as you wanted 
    # hours = difference.hours 
    # minutes = difference.minutes 

    # using timedelta 
    # pause = timedelta(seconds=3600)
    # difference = finish_dt - start_dt - pause
    # first element of timedelta is days, if you want to calculate the difference of days in hours, add difference.days * 24  
    # hours = int(difference.seconds/3600)
    # minutes = (difference.seconds % 3600) / 60
    # your code .... 

希望我的回答能满足您的要求。