Siirry sisältöön
Menu
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Tämä kysymys on merkitty
2 Vastaukset
6139 Näkymät

I want to calculate period in months depends on a fields value

I type that :

start_date = fields.Datetime('Start Date')
end_date = fields.Datetime('End Date', compute='_get_end_date')
duration = fields.Integer(string='Duration')
@api.depends('start_date', 'duration')
def _get_end_date(self):
for record in self:
record.end_date = False
if
record.start_date and record.duration:
record.end_date = record.start_date + \
timedelta(months=record.duration)

if I type timedelta as hour or days it work 
any help?




Avatar
Hylkää
Paras vastaus

timedelta doesn't have Months parameter, it only have the below:

Syntax : datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) Returns : Date

So you can use  relativedelta, and the below is the parameters 

classdateutil.relativedelta.relativedelta(dt1=Nonedt2=Noneyears=0months=0days=0leapdays=0weeks=0hours=0minutes=0seconds=0microseconds=0year=Nonemonth=Noneday=Noneweekday=Noneyearday=Nonenlyearday=Nonehour=Noneminute=Nonesecond=Nonemicrosecond=None)  


from dateutil.relativedelta import relativedelta

record.end_date = record.start_date + relativedelta(months=record.duration)



Avatar
Hylkää
Paras vastaus

try to use relativedelta instead of timedelta

from dateutil.relativedelta import relativedelta

new_date = old_date + relativedelta(months=5)


Avatar
Hylkää
Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
2
helmik. 25
1238
1
tammik. 25
1057
0
toukok. 23
1839
1
syysk. 22
3554
1
toukok. 22
3766