计算两个日期之间的月份

时间:2019-07-06 05:27:28

标签: python odoo

我需要计算两个日期之间的月份。我知道这很容易,但是我有一个代码,但是我无法完成它。

start_date=fields.Date(string="Startdate", requiered=True)

end_date=fields.Date(string="End_date", requiered=True)

duration=fields.Char(string="Duration", computer="_duration")

@api.multi 

@api.depends('start_date','end_date')

def _duration(self):

          if self.start_date and self.end_date:

               start_dt = fields.Datetime.from_string(self.start_date)

               finish_dt = fields.Datetime.from_string(self.end_date)

               difference = relativedelta(finish_dt, start_dt)

               month = difference.month

2 个答案:

答案 0 :(得分:1)

尝试使用此代码

from datetime import datetime


def diff_month(d1, d2):
return (d1.year - d2.year) * 12 + d1.month - d2.month

from datetime import datetime
from dateutil import relativedelta

def get_months(d1, d2):
  date1 = datetime.strptime(str(d1), '%Y-%m-%d')
  date2 = datetime.strptime(str(d2), '%Y-%m-%d')
  print (date2, date1)
  r = relativedelta.relativedelta(date2, date1)
  months = r.months +  12 * r.years
  if r.days > 0:
    months += 1
  return  months


  month = get_months('2018-08-13','2019-06-30')
  print(month)

答案 1 :(得分:1)

尝试此代码

from datetime import datetime
from dateutil import relativedelta
date1 = datetime.strptime(str('2019-03-01'), '%Y-%m-%d')
date2 = datetime.strptime(str('2019-07-01'), '%Y-%m-%d')
r = relativedelta.relativedelta(date2, date1)
print(r.months)