最初の日付を取得する必要があります(org.joda.time.LocalDate
)1か月と最後の1か月。最初のものを取得するのは簡単ですが、最後のものを取得するには月の長さが異なり、2月の長さも年によって異なるため、何らかのロジックが必要なようです。 JodaTimeにすでに組み込まれているメカニズムはありますか、それとも自分で実装する必要がありますか?
どうですか:
_LocalDate endOfMonth = date.dayOfMonth().withMaximumValue();
_
dayOfMonth()
は、元のLocalDate
を認識する方法で「月の日」フィールドを表す_LocalDate.Property
_を返します。
たまたまwithMaximumValue()
メソッドは documented でさえあり、この特定のタスクに推奨しています:
この操作は、月の長さが異なるため、月の最終日にLocalDateを取得するのに役立ちます。
_LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();
_
別の簡単な方法は次のとおりです。
//Set the Date in First of the next Month:
answer = new DateTime(year,month+1,1,0,0,0);
//Now take away one day and now you have the last day in the month correctly
answer = answer.minusDays(1);
古い質問ですが、これを探していたときのトップのGoogle結果です。
誰かがJodaTimeを使用する代わりにint
として実際の最終日を必要とする場合、これを行うことができます:
public static final int JANUARY = 1;
public static final int DECEMBER = 12;
public static final int FIRST_OF_THE_MONTH = 1;
public final int getLastDayOfMonth(final int month, final int year) {
int lastDay = 0;
if ((month >= JANUARY) && (month <= DECEMBER)) {
LocalDate aDate = new LocalDate(year, month, FIRST_OF_THE_MONTH);
lastDay = aDate.dayOfMonth().getMaximumValue();
}
return lastDay;
}