Увеличение заданной даты для Полумесячной Частоты Оплаты 1-го и 16-го числа месяца - PullRequest
0 голосов
/ 27 февраля 2019

Если я знаю, что для semi-monthly payment frequency, я всегда должен использовать 1st и 16th каждого месяца, учитывая первую дату, как мне увеличить его?

Это то, что у меня есть до сих пор:

...
while(cnt.getAndIncrement() <= pmtNumber ) {
   monthdate = incrementDateUsingPaymentFrequency(LocalDate.of(2018, 2, 1), PaymentFrequencyCodeEnum.SEMIMONTHLY);
   //do something with this incremented month
}
...
public static LocalDate incrementDateUsingPaymentFrequency(LocalDate monthDate, PaymentFrequency paymentFrequency){
    LocalDate incrementedDate = null;
    if(paymentFrequency == PaymentFrequency.SEMIMONTHLY){
        incrementedDate = monthDate.plusDays(monthDate.getDayOfMonth() == 1 ? 16 : 0);
    }
    return incrementedDate;
}

Результат, которого я ожидаю:

 02/01/2018
 02/16/2018
 03/01/2018
 03/16/2018
 04/01/2018
 04/16/2018
 ...

1 Ответ

0 голосов
/ 27 февраля 2019

Поскольку мы знаем, что для semi-monthly можно использовать только 1st и 16th.Если дата 1st месяца, просто добавьте 15 дней.Когда есть что-то еще (16th), add 1 month на дату и возвращаем 1st день этого месяца.

if(paymentFrequency == PaymentFrequency.SEMIMONTHLY){
            incrementedDate = monthDate.getDayOfMonth() == 1 ? monthDate.plusDays(15) : monthDate.plusMonths(1).withDayOfMonth(1);
    }
...