Apexで月末日を計算するロジックを共有します。
date dateField = date.newInstance(1987, 12, 17);
Integer numberOfDays = Date.daysInMonth(dateField.year(), dateField.month());
Date lastDayOfMonth = Date.newInstance(dateField.year(), dateField.month(), numberOfDays);
system.debug('lastDayOfMonth:'+lastDayOfMonth);