2017-03-06 6 views
2

의 특정 일 이후 n 번째 된 요일 찾기, 제가 발견 한 것은자바 8 : 자바 8에서 달

TemporalAdjuster temporal = dayOfWeekInMonth(1,DayOfWeek.MONDAY) 

은 월의 첫 번째 월요일 시간적 제공하고,

next(DayOfWeek.MONDAY) 

이 있습니다 특정 날짜 이후 다음 월요일.

그러나 특정 날짜 이후에 월요일부터 월요일을 찾고 싶습니다.

예를 들어, 나는 2017년 6월 6일 후 2 일 월요일 원하는 그것은 2017년 6월 19일 어디

dayOfWeekInMonth(2,DayOfWeek.MONDAY)

나에게 2017년 6월 12일 및

next(DayOfWeek.MONDAY) 
을 줄 것이다 있어야한다

에는 당연히 n 번째 DayOfWeek의 표시기에 대한 매개 변수가 없습니다. 다음 월요일 (2017-06-12) 월요일을 제공합니다.

어떻게 루핑하지 않고 계산할 수 있습니까?

답변

4

이 다음주 월요일을 찾은 다음 (N을 - 1) 추가 주 :

public static TemporalAdjuster nextNthDayOfWeek(int n, DayOfWeek dayOfWeek) { 
    return temporal -> { 
     Temporal next = temporal.with(TemporalAdjusters.next(dayOfWeek)); 
     return next.plus(n - 1, ChronoUnit.WEEKS); 
    }; 
} 

public static void main(String[] args) { 
    LocalDate date = LocalDate.of(2017, 3, 7); 
    date = date.with(nextNthDayOfWeek(2, DayOfWeek.MONDAY)); 
    System.out.println("date = " + date); // prints 2017-03-20 
} 
+0

이 좋은 솔루션을 주셔서 감사합니다! –