将char转换为datetime odoo 9 [英] Convert char to datetime odoo 9

查看:110
本文介绍了将char转换为datetime odoo 9的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个char字段,是从odoo中的excel或csv导入数据.

I have two char fields, data import from excel or csv in odoo.

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(来自外部源的数据)

time_1 = 10:00:00, time_2 = 16:00:00 (data from external source)

如何使用@ api.onchange('time_1','time_2')或@ api.depends('time_1','time_2')

How with @api.onchange('time_1', 'time_2') or @api.depends('time_1', 'time_2')

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

convert char to time and subtract time_2 - time_1 and put result in result field?

推荐答案

应该是这样,

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 结果 当您对其执行任何算术运算时. timedelta有 属性,而您会在几秒钟内获得差异,因此您可以进行转化 几秒到几小时.

Two datetime objects will return timedelta obect in result while you perform any arithmetic operations on it. timedelta has property while will give you difference in seconds, so you can convert that seconds to hours.

然后在视图集中

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

这篇关于将char转换为datetime odoo 9的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆