如果我知道对于semi-monthly payment frequency,在给定第一个日期的情况下,我应该始终使用每个月的1st16th,如何增加它?

这就是我所拥有的
 远:

...
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
 ...

最佳答案

因为我们知道对于semi-monthly仅使用1st16th
当日期是月份的1st时,只需添加15天。
当还有其他内容(16th)时,请add 1 month记录日期并返回该月的1st天。

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

09-20 09:34