0

I have a scenario such like that. i have a start date and end date in odoo from. i want to find the days between two given dates and those days need to be compared with other model's week days.

coool ksh
  • 11
  • 5

2 Answers2

0

You can use this function in python code for finding days between two dates.

from datetime import date
f_date = date(2014, 7, 2)
l_date = date(2014, 7, 11)
delta = l_date - f_date
print(delta.days)
Bhoomi Vaishnani
  • 718
  • 4
  • 19
0

Bhoomi's answer gave you the easiest way to do it with pure python.

I just wanted to expand on that a bit and show you specifically working with Odoo fields. If you have 2 fields.Date or fields.Datetime fields on a model, it might be easiest to add another field to compute days between then.

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

Depending on your version of Odoo, the start and stop values in those examples may be string or actual datetime.date object. In older version of Odoo I believe they are strings.

But Odoo has a helper if you run into that:

from odoo import fields


fields.Date.from_string()

So your compute may potentially need to look more like:

record.days_until = (fields.Date.from_string(record.stop) - fields.Date.from_string(record.start)).days
Holden Rehg
  • 917
  • 5
  • 10