用Odoo 8計算指定日期之前的剩餘天數

2024-05-18 12:23:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望计算特定日期之前的剩余天数,必须在同一查看表单中输入。

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'),
      }

Tags: formatfieldsdatetimedatecurrentd1joiningstrptime
3条回答

下面我将发布一个通用的解决方案供您参考

        from dateutil import relativedelta
        from datetime import  datetime
        datetime_fomat = '%Y-%m-%d %H:%M:%S'
        end="any  future date in string"##########
        current =datetime.now().replace(microsecond=0)
        end = datetime.strptime(str(end), datetime_fomat)
        diff = relativedelta.relativedelta(end, current)

        day=diff.days >=1 and diff.days or 0
        hour=diff.hours >=1 and diff.hours or 0
        minute=diff.minutes>=1 and diff.minutes or 0
        second=diff.seconds>=1 and diff.seconds or 0
        print "{day}days:{hour}hours:{minute}minutes: {second}seconds".format(day=day,hour=hour,minute=minute,second=second)

希望这对你有帮助。在

这就是解决方案

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'), }

和13;
和13;

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

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

相关问题 更多 >

    热门问题