【问题标题】:odoo calculate age from a date field and today dateodoo 从日期字段和今天日期计算年龄
【发布时间】:2023-02-22 13:04:25
【问题描述】:

我想在字段和今天日期之间获得一个年龄

from openerp import models, fields, api, _
from openerp import SUPERUSER_ID
from datetime import date

class report_purchase_stock(models.Model):
_name='report.purchase.stock'

etaw_update = fields.Date('ETA Warehouse') // 2022-01-24
etaw_age = fields.Char('Days in Warehouse')

我在论坛上试过类似的东西,但它返回空

@api.onchange('etaw_update')
def set_age(self):
    for rec in self:
        if rec.etaw_update:
            dt = rec.etaw_update
            d1 = datetime.strptime(dt, "%Y-%m-%d").date()
            d2 = date.today()
            rd = relativedelta(d2, d1)
            rec.etaw_age = str(rd.years) + ' years' 

我想要的是 1 个月 14 天

【问题讨论】:

    标签: odoo odoo-8


    【解决方案1】:

    我假设 etaw_update 是产品首次进入仓库的日期,etaw_age 是该产品存储的总天数。是对的吗?

    如果是这样,您可能需要定义一个 current_date 变量来获取今天的日期,然后您可以用 etaw_update 减去 current_date

    @api.onchange('etaw_update')
      def set_age(self):
        for rec in self:
         current_date = date.today()
         date_in_your_field = rec.etaw_update
    
         rec.etaw_age = current_date - date_in_your_field
         print(str(rec.etaw_age))
    

    如果这是您需要的,请告诉我

    【讨论】:

    • 谢谢你的回答。我已经编辑了我的问题。我想要的是 1 个月 14 天
    【解决方案2】:

    在开头添加此代码:

    从日期时间导入日期,日期时间,timedelta

    从 dateutil.relativedelta 导入 relativedelta

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      相关资源
      最近更新 更多