그냥 1 일을 빼고 7을 나눈 다음 1을 더합니다.이 첫 7 일은 입니다. 항상 첫 번째 요일 (화요일, 수요일 ...) 그 달의 실제 1 일입니다.
public int getWeekOfWeekDay(LocalDate date) {
return ((date.getDayOfMonth() - 1)/7) + 1;
}
을 ...하지만 당신은 Calendar
을 사용하고 Calendar.DAY_OF_MONTH
필드의 값을 가져 오는 동일한 기능을 수행 할 수 있습니다 :
개인적으로 난 Joda 시간을 사용하십시오.
편집 : 실제로, 나는 변경을 위해 실제로 java.util.Calendar
이 Joda Time보다 간단하다는 것을 알아 차렸습니다. 특정 필드가 있습니다! 당신이 필요로하는 것입니다 : DAY_OF_WEEK_IN_MONTH
에 대한 문서에서
int weekOfWeekDay = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
: 현재 월 내에서 요일의 서수를 나타내는 get 및 set를위한
필드 번호. DAY_OF_WEEK 필드와 함께 한 달 내에 하루를 고유하게 지정합니다. WEEK_OF_MONTH 및 WEEK_OF_YEAR와 달리이 필드의 값은 getFirstDayOfWeek() 또는 getMinimalDaysInFirstWeek()에 의존하지 않습니다. DAY_OF_MONTH 1 - 7은 항상 DAY_OF_WEEK_IN_MONTH 1에 해당합니다. 8 ~ 14는 DAY_OF_WEEK_IN_MONTH 2에 해당합니다.
나는 내가 모든 라운드 단지 훨씬 더 좋은 API이기 때문에 Joda 시간 버전을 사용 아마도 여전히을 거라고 생각하지만, 당신이 있다면 적어도 하나에서이 작업을 수행 할 수 Calendar
를 사용하는을 강제 샷.
멋진 트릭, Jon Skeet style +1 – Pragmateek