2016-12-14 4 views
3

У меня есть два поля символов, импорт данных из excel или csv в odoo.Преобразование char в datetime odoo 9

time_1= fields.Char(string = 'Time 1') 
time_2= fields.Char(string = 'Time 2') 
result= fields.Float(string = 'Result Time 2 - Time 1') #Need result 06:00 

time_1 = 10:00:00, time_2 = 16:00:00 (данные из внешнего источника)

Как с @ api.onchange ('time_1', 'time_2') или @ api.depends ('time_1', 'time_2')

преобразовать символ в time и вычесть time_2 - time_1 и поместить результат в поле результата?

ответ

2

Это должно быть так,

from datetime import datetime 

@api.multi 
@api.onchange('time_1', 'time_2') 
def onchange_time(self): 
    for rec in self: 
     time1 = datetime.strptime(rec.time1, "%Y-%m-%d %H:%M:%S") 
     time2 = datetime.strptime(rec.time2, "%Y-%m-%d %H:%M:%S") 
     rec.result = (time2 - time1).seconds/float(60*60) 

Два DateTime объекты будут возвращать timedelta obect в результате во время выполнения каких-либо арифметических операций над ним. timedelta имеет свойство , а даст вам разницу в секундах, поэтому вы можете конвертировать , что от нескольких часов до нескольких часов.

И тогда в силу установить

<field name="result" widget="float_time" /> 
Смежные вопросы