BAEL-3401

- Implementation for adding days skipping weekends in LocalDate object in Java 8
This commit is contained in:
vatsalgosar 2019-11-07 22:53:51 +05:30
parent f2c811eb47
commit d74c31b3bf
2 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,21 @@
package com.baeldung.datetime;
import java.time.DayOfWeek;
import java.time.LocalDate;
public class AddSubtractDaysSkippingWeekendsUtils {
public static LocalDate addSubtractDaysSkippingWeekendsIterativeMethod(LocalDate date, int days) {
LocalDate result = date;
int addedDays = 0;
int absDays = Math.abs(days);
int day = (days > 0) ? 1 : -1;
while (addedDays < absDays) {
result = result.plusDays(day);
if (!(result.getDayOfWeek() == DayOfWeek.SATURDAY || result.getDayOfWeek() == DayOfWeek.SUNDAY)) {
++addedDays;
}
}
return result;
}
}

View File

@ -0,0 +1,27 @@
package com.baeldung.datetime;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import java.time.LocalDate;
public class AddSubtractDaysSkippingWeekendsUtilsUnitTest {
@Test
public void givenLocalDateAndDaysToAdd_thenAddDaysSkippingWeekendsUsingIterativeMethod() {
LocalDate initialDate = LocalDate.of(2019, 11, 7);
LocalDate expectedDate = LocalDate.of(2019, 11, 13);
LocalDate result = AddSubtractDaysSkippingWeekendsUtils.addSubtractDaysSkippingWeekendsIterativeMethod(initialDate, 4);
assertEquals(expectedDate, result);
}
@Test
public void givenLocalDateAndDaysToAdd_thenSubtractDaysSkippingWeekendsUsingIterativeMethod() {
LocalDate initialDate = LocalDate.of(2019, 11, 7);
LocalDate expectedDate = LocalDate.of(2019, 11, 1);
LocalDate result = AddSubtractDaysSkippingWeekendsUtils.addSubtractDaysSkippingWeekendsIterativeMethod(initialDate, -4);
assertEquals(expectedDate, result);
}
}