2017-02-10 9 views
0

Как рассчитать часы в моем примере:часов Как рассчитать число между двумя DateTime поля odoo 9

((FINISH - START) - ПАУЗА) формате

в представлении формы

Start = 02/10/2017 07:55:54

отделка = 02/10/2017 16:50:54

пауза = 1 час (по умолчанию)


в консоли DateTime выглядеть следующим образом: 2017-02-10 07:55:54

нужно это ==> результат = 07:55

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

ответ

3

Вы можете использовать timedelta или относительная дельта, чтобы вычислить разницу. До этого вам нужно преобразовать объект datetime. Вот как я буду делать

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 .... 

Надеюсь, что мой ответ соответствует вашим требованиям.

+0

Nice пример, пожалуйста можно положить пример для timedelta. GL –

+0

да, конечно, я отредактировал ответ, чтобы показать, как использовать timedelta. – thangtn