From d2ddf086eefb357fbfbd71b9e47b7da0ea3db7ad Mon Sep 17 00:00:00 2001 From: George Lacey Date: Sun, 30 May 2021 05:00:14 +0100 Subject: [PATCH] Check that day doesn't exceed valid month range --- borgweb/borg/utility/time.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/borgweb/borg/utility/time.py b/borgweb/borg/utility/time.py index 889c57d..7a9d432 100644 --- a/borgweb/borg/utility/time.py +++ b/borgweb/borg/utility/time.py @@ -51,9 +51,23 @@ def subtract_months(p_date: datetime, offset): if new_date.month <= offset: offset -= new_date.month - return new_date.replace(month=12 - offset, year=new_date.year - 1) + + year = new_date.year - 1 + month = 12 - offset + + last_day = calendar.monthrange(year, month)[1] + if new_date.day > last_day: + new_date = new_date.replace(day=last_day) + + return new_date.replace(month=month, year=year) else: - return new_date.replace(month=new_date.month - months) + year = new_date.year + month = new_date.month - months + + last_day = calendar.monthrange(year, month)[1] + if new_date.day > last_day: + new_date = new_date.replace(day=last_day) + return new_date.replace(month=month) def last_day_previous_months(months_ago: int):