我希望根据描述来构建日期,例如" 2014年3月的第二个星期一"。
我该怎么做呢? LocalDate
FromWeekYearWeekAndDay
似乎是一个开始,但正如我所说,我希望提供本月的一周,而不是一年中的一周。
答案 0 :(得分:3)
这肯定可以改进,但这是一个可行的功能:
public static LocalDate GetDay(int year, int month, IsoDayOfWeek dayOfWeek,
int instance)
{
int daysInMonth = CalendarSystem.Iso.GetDaysInMonth(year, month);
var ld = new LocalDate(year, month, 1);
if (ld.IsoDayOfWeek != dayOfWeek)
ld = ld.Next(dayOfWeek);
for (int i = 1; i < instance && ld.Day + 7 <= daysInMonth; i++)
ld = ld.PlusWeeks(1);
return ld;
}
如果你想要 last ,那么你可以为实例传递5,这可能会在第4或第5周落下。
优化可能包括对其他日历的支持,以及更好地使用模数学来避免循环。
(已提交A feature request,并且可能在2.0中得到支持。)