summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdateparse/dateparse_utils.py21
-rwxr-xr-xtests/dateparse_utils_test.py1
2 files changed, 11 insertions, 11 deletions
diff --git a/dateparse/dateparse_utils.py b/dateparse/dateparse_utils.py
index bd0d491..ee2bbd9 100755
--- a/dateparse/dateparse_utils.py
+++ b/dateparse/dateparse_utils.py
@@ -672,10 +672,10 @@ class DateParser(dateparse_utilsListener):
del self.context['dow']
self.context['delta_unit'] = dow
- # For the nth Fooday in Month, start at the 1st of the
- # month and count ahead N Foodays. For the last Fooday in
- # Month, start at the last of the month and count back one
- # Fooday.
+ # For the nth Fooday in Month, start at the last day of
+ # the previous month count ahead N Foodays. For the last
+ # Fooday in Month, start at the last of the month and
+ # count back one Fooday.
if n == -1:
month += 1
if month == 13:
@@ -684,17 +684,16 @@ class DateParser(dateparse_utilsListener):
tmp_date = datetime.date(year=year, month=month, day=1)
tmp_date = tmp_date - datetime.timedelta(days=1)
- self.context['year'] = tmp_date.year
- self.context['month'] = tmp_date.month
- self.context['day'] = tmp_date.day
-
# The delta adjustment code can handle the case where
# the last day of the month is the day we're looking
# for already.
else:
- self.context['year'] = year
- self.context['month'] = month
- self.context['day'] = 1
+ tmp_date = datetime.date(year=year, month=month, day=1)
+ tmp_date = tmp_date - datetime.timedelta(days=1)
+
+ self.context['year'] = tmp_date.year
+ self.context['month'] = tmp_date.month
+ self.context['day'] = tmp_date.day
self.main_type = DateParser.PARSE_TYPE_BASE_AND_OFFSET_EXPR
except Exception as e:
raise ParseException(f'Invalid nthWeekday expression: {ctx.getText()}') from e
diff --git a/tests/dateparse_utils_test.py b/tests/dateparse_utils_test.py
index 6e539ff..8dd8131 100755
--- a/tests/dateparse_utils_test.py
+++ b/tests/dateparse_utils_test.py
@@ -73,6 +73,7 @@ parsable_expressions = [
('2 sun in jun', datetime.datetime(2021, 6, 13)),
('easter -40 days', datetime.datetime(2021, 2, 23)),
('easter +39 days', datetime.datetime(2021, 5, 13)),
+ ('2nd Sunday in May, 2022', datetime.datetime(2022, 5, 8)),
('1st tuesday in nov, 2024', datetime.datetime(2024, 11, 5)),
(
'2 days before last xmas at 3:14:15.92a',