如果我知道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
...
因为我们知道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);
}