日付から月末日を取得する

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メソッドは以下のようにして引数の日付から月末日を求める

  1. 引数の日付にaddMonths(1)で1か月後を取得する。サンプルだと2024年4月5日から2024年5月5日が取得できる
  2. DateクラスのtoStartOfMonth()を利用してその月の月初日を取得する。サンプルだと2024年5月5日の月初日である2024年5月1日が取得できる
  3. 最後にaddDay(-1)で前日を取得する。サンプルだと2024年5月1日の前日である2024年4月30日が取得できる