从odoo中的日期计算Odoo Days?

Posted

技术标签:

【中文标题】从odoo中的日期计算Odoo Days?【英文标题】:Odoo Days calculations from date in odoo? 【发布时间】:2021-03-05 13:38:29 【问题描述】:

我有这样的场景。 我在 odoo 中有一个开始日期和结束日期。我想找到两个给定日期之间的天数,这些天数需要与其他模型的工作日进行比较。

【问题讨论】:

看一下这个问题***.com/questions/17833176/… 你可以举个例子-github.com/odoo/odoo/blob/14.0/addons/crm/models/… 【参考方案1】:

您可以在 python 代码中使用此函数来查找两个日期之间的天数。

from datetime import date
f_date = date(2014, 7, 2)
l_date = date(2014, 7, 11)
delta = l_date - f_date
print(delta.days)

【讨论】:

【参考方案2】:

Bhoomi 的回答为您提供了使用纯 python 的最简单方法。

我只是想稍微扩展一下,向您展示如何专门使用 Odoo 字段。如果模型上有 2 个 fields.Datefields.Datetime 字段,则添加另一个字段来计算其间的天数可能是最简单的。

from odoo import api, fields, models


class MyClass(models.Model):
    _name = "my.class"

    start = fields.Date()
    stop = fields.Date()
    days_until = fields.Integer(
        compute="_compute_days_until",
        store=True
    )

    @api.depends("start", "stop")
    def _compute_days_until(self):
        for record in self:
            if record.start and record.stop:
                record.days_until = (record.stop - self.record).days
            else:
                record.days_until = 0

根据您的 Odoo 版本,这些示例中的 startstop 值可能是字符串或实际的 datetime.date 对象。在旧版本的 Odoo 中,我相信它们是字符串。

但如果您遇到这种情况,Odoo 有一个帮手:

from odoo import fields


fields.Date.from_string()

因此您的计算可能需要看起来更像:

record.days_until = (fields.Date.from_string(record.stop) - fields.Date.from_string(record.start)).days

【讨论】:

以上是关于从odoo中的日期计算Odoo Days?的主要内容,如果未能解决你的问题,请参考以下文章

Odoo - 如何按日期搜索

我需要根据用户在odoo中选择的月份来获取月份的开始日期和结束日期

odoo14和Odoo15的区别

odoo 的时差 坑 [updated]

odoo里用sql语句说为日期date类型,没有转换为字符串。

odoo 项目经验1