我没有看到将日期设置为一个月中某一周的某一天的好方法。 Joda-Time的LocalDate没有 withWeekOfMonth 方法。我可以看到一个可能的算法,但它似乎很复杂,所以我假设我错过了一些东西。我需要确定某人下一次付款的日期。如果他们在每月的第二个星期四支付,那是什么日期。
有人已经解决了这个问题吗?
好的,我能够想出这个,这似乎工作正常。
/**
* 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;
}