2012-11-23 3 views
2

작동하지 않습니다setFirstWeekday 내가 문제가있는

date : 2012-11-23 14:18:28 +0000 value for date : 6 Friday 

그리고 내가 받아야한다 date : 2012-11-23 14:18:28 +0000 value for date : 5 Friday

+0

'dateForMonth' 정의 방법 –

+0

- (NSMutabl eArray *) setInfoForSpecificDate : (NSDate *) dateForMonth 그것은 [NSDate 날짜]입니다. – xGoPox

+0

내 ipad는 미국 형식으로 설정되어 있지만 미국의 경우에도 1시에 내 월요일을 원한다고해도 금요일은 5 일이됩니다 ... : o – xGoPox

답변

4

당신이 정말로 NSCalendar, NSDate, NSDateFormatter (당신이 만든 NSCalendar 객체를 사용하지 않고있다)의 3 개의 분리 된 객체를 다루고 있다는 것이 문제이다. 3 개는 암시 적으로 연결되어 있지 않습니다. NSDate를 날짜 포맷터로 전달하면 수정 된 요일이있는 사용자 지정 NSCalendar가 방정식에서 완전히 벗어납니다. 기억하십시오 : NSDate 객체는 참조 점 (예 : 1/1/2001 Midnight GMT)에서의 초 단위와 같은 단순한 시간 측정 값입니다. "요일 이름", "요일", "요일"이라는 개념을 가진 달력 객체입니다. .

NSCalendar *gregorianT = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
[gregorianT setFirstWeekday:2]; 

NSDateFormatter *formatDayWeek = [[NSDateFormatter alloc] init]; 
[formatDayWeek setCalendar:gregorianT]; 
[formatDayWeek setDateFormat:@"c EEEE"]; 

NSLog(@"Value for date: %@", [formatDayWeek stringFromDate:dateForMonth]); 

을 ... 또는 당신은 당신의 NSCalendar에서 직접 순서와 액세스 할 수 있습니다 : 당신은 수정에 순서를보고 싶다면 "시간의 측정을위한 등

, 포맷터에 달력 개체를 전달 객체입니다.

NSCalendar *gregorianT = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
[gregorianT setFirstWeekday:2]; 

NSUInteger valueOfDay = [gregorianT ordinalityOfUnit:NSWeekdayCalendarUnit inUnit:NSWeekCalendarUnit forDate:dateForMonth]; 

NSLog(@"Value for date : %ld", (long)valueOfDay);