从 datetime + float on odoo 获取日期时间的方法

the way to get a datetime from datetime + float on odoo

我想通过 session_start + duration 了解 session_finish。 session_start 类型是 date,持续时间是 float

@api.onchange('session_start')
def onchange_session_start(self):
    for record in self:
        if self.session_start is not None : 
            self.session_finish = self.session_start + self.duration

如果会话开始是一个日期时间对象,那么您可以使用 timedelta 函数添​​加持续时间

import datetime
a = datetime.datetime(100,1,1,11,34,59)
b = a + datetime.timedelta(0,3) # days, seconds, then other fields.

如果不是则将数据转换为日期时间

您需要转换持续时间,然后将其添加到 session_start,如 所示:

class TestModel(models.Model):
    _inherit = "test.model"

    @api.onchange('session_start')
    def onchange_session_start(self):
        if self.session_start:
            session_start = fields.Datetime.from_string(self.session_start)
            interval = datetime.timedelta(seconds=(self.duration * 3600))
            self.session_finish = fields.Datetime.to_string(session_start + interval)

    session_start = fields.Datetime("Session start")
    duration = fields.Float("Duration")
    session_finish = fields.Datetime("Session end")