From 36fc86b69c591babc0af1a27bbf0694e1bd40aee Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Mon, 29 Jul 2019 23:07:15 +1000 Subject: [PATCH] Arithmetic fixes --- .../fortuna/ical4j/transform/recurrence/ByMonthDayRule.java | 4 ++-- .../net/fortuna/ical4j/transform/recurrence/ByWeekNoRule.java | 4 ++-- .../fortuna/ical4j/transform/recurrence/ByYearDayRule.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/fortuna/ical4j/transform/recurrence/ByMonthDayRule.java b/src/main/java/net/fortuna/ical4j/transform/recurrence/ByMonthDayRule.java index 3bdf8007e..d14eca08a 100644 --- a/src/main/java/net/fortuna/ical4j/transform/recurrence/ByMonthDayRule.java +++ b/src/main/java/net/fortuna/ical4j/transform/recurrence/ByMonthDayRule.java @@ -68,7 +68,7 @@ public List apply(T date) { // construct a list of possible month days.. final int numDaysInMonth = YearMonth.of(getYear(date), getMonth(date)).lengthOfMonth(); for (final int monthDay : monthDayList) { - if (monthDay == 0 || monthDay <= -numDaysInMonth || monthDay > numDaysInMonth) { + if (monthDay == 0 || monthDay < -numDaysInMonth || monthDay > numDaysInMonth) { if (log.isTraceEnabled()) { log.trace("Invalid day of month: " + monthDay); } @@ -84,7 +84,7 @@ public List apply(T date) { if (numDaysInMonth < -monthDay) { continue; } - candidate = withTemporalField(date, DAY_OF_MONTH, numDaysInMonth + monthDay); + candidate = withTemporalField(date, DAY_OF_MONTH, numDaysInMonth + 1 + monthDay); } retVal.add(candidate); }; diff --git a/src/main/java/net/fortuna/ical4j/transform/recurrence/ByWeekNoRule.java b/src/main/java/net/fortuna/ical4j/transform/recurrence/ByWeekNoRule.java index e6450500c..33a7c893f 100644 --- a/src/main/java/net/fortuna/ical4j/transform/recurrence/ByWeekNoRule.java +++ b/src/main/java/net/fortuna/ical4j/transform/recurrence/ByWeekNoRule.java @@ -38,7 +38,7 @@ public List transform(List dates) { for (final T date : dates) { final int numWeeksInYear = (int) IsoFields.WEEK_OF_WEEK_BASED_YEAR.rangeRefinedBy(date).getMaximum(); for (final Integer weekNo : weekNoList) { - if (weekNo == 0 || weekNo <= -numWeeksInYear || weekNo > numWeeksInYear) { + if (weekNo == 0 || weekNo < -numWeeksInYear || weekNo > numWeeksInYear) { if (log.isTraceEnabled()) { log.trace("Invalid week of year: " + weekNo); } @@ -54,7 +54,7 @@ public List transform(List dates) { if (numWeeksInYear < -weekNo) { continue; } - candidate = withTemporalField(date, ALIGNED_WEEK_OF_YEAR, numWeeksInYear + weekNo); + candidate = withTemporalField(date, ALIGNED_WEEK_OF_YEAR, numWeeksInYear + 1 + weekNo); } weekNoDates.add(candidate); } diff --git a/src/main/java/net/fortuna/ical4j/transform/recurrence/ByYearDayRule.java b/src/main/java/net/fortuna/ical4j/transform/recurrence/ByYearDayRule.java index 5aa44732a..fa556c4aa 100644 --- a/src/main/java/net/fortuna/ical4j/transform/recurrence/ByYearDayRule.java +++ b/src/main/java/net/fortuna/ical4j/transform/recurrence/ByYearDayRule.java @@ -67,7 +67,7 @@ public List apply(T date) { // construct a list of possible year days.. final int numDaysInYear = Year.of(getYear(date)).length(); for (final int yearDay : yearDayList) { - if (yearDay == 0 || yearDay <= -numDaysInYear || yearDay > numDaysInYear) { + if (yearDay == 0 || yearDay < -numDaysInYear || yearDay > numDaysInYear) { if (log.isTraceEnabled()) { log.trace("Invalid day of year: " + yearDay); } @@ -83,7 +83,7 @@ public List apply(T date) { if (numDaysInYear < -yearDay) { continue; } - candidate = withTemporalField(date, DAY_OF_YEAR, numDaysInYear + yearDay); + candidate = withTemporalField(date, DAY_OF_YEAR, numDaysInYear + 1 + yearDay); } retVal.add(candidate); }