- Separated add and subtract days into two methods for simplification
This commit is contained in:
parent
d74c31b3bf
commit
1e1fe0592e
@ -5,17 +5,27 @@ import java.time.LocalDate;
|
|||||||
|
|
||||||
public class AddSubtractDaysSkippingWeekendsUtils {
|
public class AddSubtractDaysSkippingWeekendsUtils {
|
||||||
|
|
||||||
public static LocalDate addSubtractDaysSkippingWeekendsIterativeMethod(LocalDate date, int days) {
|
public static LocalDate addDaysSkippingWeekends(LocalDate date, int days) {
|
||||||
LocalDate result = date;
|
LocalDate result = date;
|
||||||
int addedDays = 0;
|
int addedDays = 0;
|
||||||
int absDays = Math.abs(days);
|
while (addedDays < days) {
|
||||||
int day = (days > 0) ? 1 : -1;
|
result = result.plusDays(1);
|
||||||
while (addedDays < absDays) {
|
|
||||||
result = result.plusDays(day);
|
|
||||||
if (!(result.getDayOfWeek() == DayOfWeek.SATURDAY || result.getDayOfWeek() == DayOfWeek.SUNDAY)) {
|
if (!(result.getDayOfWeek() == DayOfWeek.SATURDAY || result.getDayOfWeek() == DayOfWeek.SUNDAY)) {
|
||||||
++addedDays;
|
++addedDays;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LocalDate subtractDaysSkippingWeekends(LocalDate date, int days) {
|
||||||
|
LocalDate result = date;
|
||||||
|
int subtractedDays = 0;
|
||||||
|
while (subtractedDays < days) {
|
||||||
|
result = result.minusDays(1);
|
||||||
|
if (!(result.getDayOfWeek() == DayOfWeek.SATURDAY || result.getDayOfWeek() == DayOfWeek.SUNDAY)) {
|
||||||
|
++subtractedDays;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,18 +9,18 @@ import java.time.LocalDate;
|
|||||||
public class AddSubtractDaysSkippingWeekendsUtilsUnitTest {
|
public class AddSubtractDaysSkippingWeekendsUtilsUnitTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenLocalDateAndDaysToAdd_thenAddDaysSkippingWeekendsUsingIterativeMethod() {
|
public void givenLocalDateAndDaysToAdd_thenAddDaysSkippingWeekends() {
|
||||||
LocalDate initialDate = LocalDate.of(2019, 11, 7);
|
LocalDate initialDate = LocalDate.of(2019, 11, 7);
|
||||||
LocalDate expectedDate = LocalDate.of(2019, 11, 13);
|
LocalDate expectedDate = LocalDate.of(2019, 11, 13);
|
||||||
LocalDate result = AddSubtractDaysSkippingWeekendsUtils.addSubtractDaysSkippingWeekendsIterativeMethod(initialDate, 4);
|
LocalDate result = AddSubtractDaysSkippingWeekendsUtils.addDaysSkippingWeekends(initialDate, 4);
|
||||||
assertEquals(expectedDate, result);
|
assertEquals(expectedDate, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenLocalDateAndDaysToAdd_thenSubtractDaysSkippingWeekendsUsingIterativeMethod() {
|
public void givenLocalDateAndDaysToSubtract_thenSubtractDaysSkippingWeekends() {
|
||||||
LocalDate initialDate = LocalDate.of(2019, 11, 7);
|
LocalDate initialDate = LocalDate.of(2019, 11, 7);
|
||||||
LocalDate expectedDate = LocalDate.of(2019, 11, 1);
|
LocalDate expectedDate = LocalDate.of(2019, 11, 1);
|
||||||
LocalDate result = AddSubtractDaysSkippingWeekendsUtils.addSubtractDaysSkippingWeekendsIterativeMethod(initialDate, -4);
|
LocalDate result = AddSubtractDaysSkippingWeekendsUtils.subtractDaysSkippingWeekends(initialDate, 4);
|
||||||
assertEquals(expectedDate, result);
|
assertEquals(expectedDate, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user