月の特定の週の特定の曜日に日付を設定する良い方法がわかりません。 Joda -TimeのLocalDateには withWeekOfMonth メソッドがありません。可能性のあるアルゴリズムを見ることができますが、複雑に思えるので、何かが欠けていると仮定します。私が必要としているのは、誰かが支払われる次の日付を決定することです。また、月の第 2 木曜日に支払われる場合、それは何日ですか。
誰かがすでにこの問題を解決していますか?
わかりました、私はこれを思い付くことができました。これはうまくいくようです。
/**
* Finds a date such as 2nd Tuesday of a month.
*/
public static LocalDate calcDayOfWeekOfMonth( final DayOfWeek pDayOfWeek, final int pWeekOfMonth, final LocalDate pStartDate )
{
LocalDate result = pStartDate;
int month = result.getMonthOfYear();
result = result.withDayOfMonth( 1 );
result = result.withDayOfWeek( pDayOfWeek.ordinal() );
if ( result.getMonthOfYear() != month )
{
result = result.plusWeeks( 1 );
}
result = result.plusWeeks( pWeekOfMonth - 1 );
return result;
}