将 char 转换为日期时间 odoo 9
Convert char to datetime 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')
将字符转换为时间并减去 time_2 - time_1 并将结果放入结果字段?
应该是这样,
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)
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" />
我有两个字符字段,从 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')
将字符转换为时间并减去 time_2 - time_1 并将结果放入结果字段?
应该是这样,
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)
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" />