ApexのDateクラスに月末日を判定する処理が存在しない
月末日は以下のように日付の加算・減算で取得することができる
// 指定日付の月末日を取得する
private date lastDayOfMonth(Date d){
Date nextMonthStartDate = d.addMonths(1).toStartOfMonth();
return nextMonthStartDate.addDays(-1);
}
system.debug(lastDayOfMonth(Date.newInstance(2024,4,5))); // 2024-4-30
lastDayOfMonthメソッドは以下のようにして引数の日付から月末日を求める
- 引数の日付にaddMonths(1)で1か月後を取得する。サンプルだと2024年4月5日から2024年5月5日が取得できる
- DateクラスのtoStartOfMonth()を利用してその月の月初日を取得する。サンプルだと2024年5月5日の月初日である2024年5月1日が取得できる
- 最後にaddDay(-1)で前日を取得する。サンプルだと2024年5月1日の前日である2024年4月30日が取得できる