odoo 日期类型计算和比较

计算ODOO中的日期时,多观察变量类型的变化!

  • datetime
  • timedelta
dob = fields.Datetime("出生日期")

日期比较

@api.constrains("dob")
    def _check_dob(self):
        for record in self:
            if record.dob and record.dob > fields.Datetime.now():
                print(type(self.dob))  
                #  
                print(type(fields.Date.today()))  
                #  
                raise exceptions.ValidationError("出生日期不能晚于当前日期")

计算间隔日期

@api.depends 可能需要另外考虑

@api.onchange("dob")
    def _onchange_dob(self):
        now = datetime.now()
        for record in self:
            if record.dob:
                time = now - record.dob
                print(type(time))  # 
                print(type(now))  # 
                print(type(record.dob))  # 
                print(now)  # 2020-04-10 09:23:30.776009
                print(record.dob)  # 2015-05-18 09:01:39
                age = time.days / 365  # time.days 自动将timedelta转为int类型
                print(time.days)  # 天数 1789
                print(time.seconds)  # 秒差 1375
                if age <= 0:
                    record.age = 0
                else:
                    record.age = age

你可能感兴趣的:(odoo)