【问题标题】:Calculate days between 2 dates automatically自动计算两个日期之间的天数
【发布时间】:2018-04-02 10:31:48
【问题描述】:

在 odoo 10 中,我想要一个计算字段来计算当前日期和另一个日期之间的每一天的差异: 这是我的代码:

Python:

days_number = fields.Integer('Days remaining', compute='_compute_remaining_days', store=True)
@api.depends('maturity_date')
def _compute_remaining_days(self):
    current_date = datetime.datetime.now().date()
    date1 = False
    if self.maturity_date:
        date1 = datetime.datetime.strptime(self.maturity_date, "%Y-%m-%d")

    date2 = datetime.datetime.strptime(str(current_date), "%Y-%m-%d")
    date3 = date1 - date2
    date = int(date3.days)
    self.days_number = date

XML:

 <record id="ir_cron_remain_days" model="ir.cron">
    <field name="name">Remaining Days</field>
    <field eval="True" name="active"/>
    <field name="user_id" ref="base.user_root"/>
    <field name="interval_number">1</field>
    <field name="interval_type">days</field>
    <field name="numbercall">-1</field>
    <field eval="False" name="doall"/>
    <field name="model">tresorerie_test.account.payment.maturity</field>
    <field name="function">_compute_remaining_days</field>
    <field name="args">()</field>
</record>

字段没有自动取值的问题。

我该如何解决这个问题?

【问题讨论】:

  • 你需要用timedelta来表示两个日期之间的差异
  • 我会从字段中删除计算方法,自动功能应该更新字段。每次需要值时都会执行字段上的计算方法

标签: odoo-10


【解决方案1】:
  • 如果您在 xml 视图中提供了“days_number”字段,则删除 store=True 它将按需要工作。
  • 你已经得到一个整数,不需要输入整数

    start = date(2018,04,03) end = date(2018,04,10) ans = end - start print ans.days

【讨论】:

    【解决方案2】:

    如果我们有 2 个日期(start_date,end_date)并且我们想计算这些日期之间的天数,我们可以在下面的函数中进行:

    def calculate_days_between_dates(self):
        diff_date = self.end_date - self.start_date
        float_days = diff_date.days + float(diff_date.seconds)/ 86400
        days_number = int(float_days)
    
        return days_number 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-26
      • 2019-09-27
      • 1970-01-01
      • 2011-11-08
      相关资源
      最近更新 更多