【问题标题】:Convert char to datetime odoo 9将 char 转换为日期时间 odoo 9
【发布时间】:2016-12-14 17:47:06
【问题描述】:

我有两个 char 字段,从 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_2 - time_1 并将结果放入结果字段?

【问题讨论】:

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


    【解决方案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)
    

    两个 datetime 对象将在结果中返回 timedelta 对象 当您对其执行任何算术运算时。时间增量有 属性 while 会给你几秒钟的差异,所以你可以转换 从几秒到几小时。

    然后在视图集合中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-10
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      相关资源
      最近更新 更多