计算两个日期之间的月份

2024-04-27 03:49:13 发布

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

我需要计算两次约会之间的月份。我知道这很容易,但我有一个代码,我不能完成它。你知道吗

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

Tags: fromselfapitruefieldsdatetimedatestring
2条回答

尝试使用此代码

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)

尝试此代码

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)

相关问题 更多 >