Подсчитайте количество дельт между двумя датами
Я хочу вычислить, сколько относительных дельта() существует между двумя объектами даты. Мой код приведен ниже, но он не работает, так как относительная дельта не может разделить дату, но, возможно, он показывает, что я пытаюсь сделать.
Например, если моя относительная дельта составляет две недели relativedelta(weeks=1), а мои даты 2022-05-01 и 2022-05-15, то две из дельт в 1 неделю будут соответствовать двум датам с разницей в две недели.
delta=relativedelta(days= self.cleaned_data['delta_days'], months=self.cleaned_data['delta_months'])
no_loops = (self.cleaned_data['to_date'] - self.cleaned_data['from_date']) / delta
if no_loops > 36: raise ValidationError('Too many iterations.')
Дайте мне знать, если это поможет
#calculate delta between two dates
def delta_days(start_date, end_date):
start = datetime.strptime(start_date, "%m/%d/%Y")
end = datetime.strptime(end_date, "%m/%d/%Y")
delta = end - start
return delta.days
Я использовал это решение на данный момент. Оно не кажется очень чистым, но оно работает.
start_date = self.cleaned_data['from_date']
iterations = 0
while start_date < self.cleaned_data['to_date']:
iterations += 1
start_date += relativedelta(days=self.cleaned_data['delta_days'], weeks=self.cleaned_data['delta_weeks'], months=self.cleaned_data['delta_months'])
if iterations > 36: raise ValidationError('The selected date range and deltas result in too many dates to calculate. Please reduce scope to 36 or less dates.')
попробуйте этот вариант. Сначала вы должны преобразовать разницу дат и относительную дельту в дни (целое число), чтобы выполнить необходимую арифметику
delta=relativedelta(days= self.cleaned_data['delta_days'], months=self.cleaned_data['delta_months'])
no_loops = (self.cleaned_data['to_date'] - self.cleaned_data['from_date']).days / delta.days
if no_loops > 36: raise ValidationError('Too many iterations.')