计算 Odoo 8 中特定日期之前的剩余天数

calculate the remaining days before a specific date in Odoo 8

我想计算特定日期之前的剩余天数,必须在相同的视图表单中输入。

class saisir_soumission(osv.osv):
    _name='saisir.soumission' 

    def compa_date(self,cr,uid,ids,args,fields,context=None):       
        r = {}
        date_format = '%d-%m-%Y'
        joining_date = 'Date_ouv_pli'
        current_date = (datetime.today()).strftime(date_format)
        d1 = datetime.strptime(joining_date, date_format).date()
        d2 = datetime.strptime(current_date, date_format).date()
        r = str((d2-d1).days + 1)   
        return r

   _columns = {
       'NumOffre' : fields.char('N° Offre'),
       'organisme_s' : fields.char('Organisme'),
       'caution' : fields.float('Caution'),
       'Date_ouv_pli' : fields.date('Date Ouverture Plis'), #field to be entered 
       'observation_d' : fields.text('Observation'),
       'compar' : fields.function(compa_date,string='Jours Restants'),
      }

您可以使用内置的日期时间,timedelta object

>>> import datetime
>>> diff = d1 - datetime.date.today()
>>> diff.days

这里是这个解决方案

class saisir_soumission(osv.osv):
    _name='saisir.soumission' 

    def compa_date(self,cr,uid,ids,args,fields,context=None):       
        r = {}
        date_format = "%Y-%m-%d %H:%M:%S"
        joining_date = 'Date_ouv_pli'
        current_date = fields.datetime.now()
        d1 = datetime.strptime(joining_date, date_format)
        d2 = datetime.strptime(current_date, date_format)
        days = (d2 - d1).days   
        return days

   _columns = {
       'NumOffre' : fields.char('N° Offre'),
       'organisme_s' : fields.char('Organisme'),
       'caution' : fields.float('Caution'),
       'Date_ouv_pli' : fields.date('Date Ouverture Plis'), #field to be entered 
       'observation_d' : fields.text('Observation'),
       'compar' : fields.function(compa_date,string='Jours Restants'),
 
      }