如果我知道对于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);
}