2013-09-02 4 views
0

달리 weekOfYear을 변경 ... weekOfYear을 변경하지 않습니다 iterativeComponents의 weekOfMonth 설정 NSDateComponents weekOfMonth 내가 weekOfYear에 영향이없는 NSDateComponents 개체에서 weekOfMonth 속성을 설정 기대했던에

NSDateComponents *iterativeComponents = [calendar components: NSYearCalendarUnit| 
                     NSMonthCalendarUnit| 
                     NSWeekOfYearCalendarUnit| 
                     NSWeekOfMonthCalendarUnit| 
                     NSWeekdayCalendarUnit 
                  fromDate:referenceDate]; 

for (int j = 4; j > -1; j--) { 
    iterativeComponents.weekOfMonth = j; 
    NSDate *dateForWeek = [calendar dateFromComponents:iterativeComponents]; 
} 

하지 않습니다 일관성 NSDateComponents 나를 잎 개체 :

<NSDateComponents: 0x9aac9e0> 
Calendar Year: 2012 
Month: 9 
Leap month: no 
Week of Year: 36 
Week of Month: 3 
Weekday: 2 

달력에서 빠른 검사는 2009 년 9 월 셋째 주 올해의 37 번째 주 있음을 알려줍니다. iterativeComponents의 생성 날짜는

2012년 9월 2일 22시 0분 0초 0000

가 어떻게이 weekOfMonth를 설정하여 weekOfYear 재산의 정확한 계산을 달성 할 수있다?

답변

0

NSDateComponents은 요소에 대한 단순한 컨테이너입니다. 마법은 NSDate 개체를 계산하는 NSCalendar의 메서드에서 발생합니다.

구성 요소를 적절한 날짜로 변환하고 NSDateComponents으로 다시 변환하십시오.

년, 월, 주 OfMonth (보통 1 주일에 2 주일이 있음)에서 주를 계산할 수 없으므로, 검사 할 요일을 선택해야합니다. 예를 들면 월요일.