将char转换为datetime odoo 9

时间:2016-12-14 17:47:07

标签: python python-2.7 openerp open-source odoo-9

我有两个字段,从excel输入数据或在odoo中输入csv。

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')

将char转换为time并减去time_2 - time_1并将结果放入结果字段?

1 个答案:

答案 0 :(得分: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)
  

两个日期时间对象将返回 timedelta 对象的结果   当你对它执行任何算术运算时。 timedelta有   属性虽然会在几秒钟内给你差异,所以你可以转换   几秒钟到几个小时。

然后在视图集

<field name="result" widget="float_time" />