ちなみに「直後の平日」にすることも簡単にできます。
上記のコードのlatestWeekday()関数を、nextWeekday()関数として
こんな風に変更してやればOK
// 直後の平日を取得
const nextWeekday = function(date) {
if (dateFns.isWeekend(date) || holiday_jp.isHoliday(date)) {
const nextDate = dateFns.addDays(date, 1);
return nextWeekday(nextDate);
}
return date;
};
変わってるのは実質ここだけです。
const prevDate = dateFns.subDays(date, 1);
「1日前」じゃなくて「1日後」を計算してやればOK。
const nextDate = dateFns.addDays(date, 1);
あとは支払期日を計算するpayDate関数内で、nextWeekdayを呼ぶように変更すれば完成です。
// 支払期日を計算
const payDate = function (cutoffDate, terms) {
const payDateBase = addDays(cutoffDate, terms);
return nextWeekday(payDateBase);
};
結果、こうなります!