2011-10-25 2 views
2

현재 주를 알아야하는 앱을 개발합니다. 나는 이것을 시도했다 :objective-c에서 현재 주 수를 얻는 방법?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *dateString = @"1-1-2011"; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
    NSDate *dateFromString = [[NSDate alloc] init]; 
    dateFromString = [dateFormatter dateFromString:dateString]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *comp = [gregorian components:NSWeekCalendarUnit fromDate:dateFromString]; 
    NSLog(@"%d", comp.week); 

    [dateFormatter release]; 
} 

그러나 그것은 나에게 52를 보여준다. 실제로 잘못된 결과이다. 제발, 나에게 어떤 아이디어라도 제안 해. 미리 감사드립니다.

+0

토요일에 연차가 시작되면 어떨까요? 이번주는 첫 번째가 아닙니다 ... 전년도의 마지막 = 52 번째 주입니다. :) – JakubKnejzlik

+0

@GrizzlyNetch : ISO-8601 번호 매기기에서 전년도의 52 번째입니다. 그것은 미국 번호 매김의 첫 번째 일 것입니다. 다음은 미국 주간이 일요일로 시작한다는 사실입니다. 그리고 분명히 상황을 좀 더 혼란스럽게 만드는 몇 가지 다른 주 번호 시스템이 있습니다. http://en.wikipedia.org/wiki/Seven-day_week#Week_numbering (주 번호는 아마 DST와 일치하는 유일한 것일 수 있습니다. – millimoose

답변

5

주 날짜는 사용되는 번호 지정 표준에 따라 다릅니다. 예를 들어 ISO-8601 표준 defines week 1은 "올해 첫 번째 목요일이있는 주"로 표시됩니다.

2011 년 1 월 첫 번째는

이 27.12.2010-2.1.2011 주 (52) 또한 2010 년

의 주를하고, 다음 주 2011의 주 1이었다 의미 토요일이었다, 몇 가지 호환되지 않는 기준을 거기에 몇 주 시작 또는 끝나고 1 주일에 몇 주가 매겨 졌는지를 나타냅니다. 이로 인해 주 숫자가 날짜 범위를 지정하는 혼동을 줄 수 있으며이를 사용하지 않는 것이 가장 좋습니다.

문서에서 NSCalendar에 이르기까지 setMinimumDaysInFirstWeek:을 사용하여 주 수를 조정할 수도 있습니다.

+0

dateString의 값을 @ "03-01-2011"로 변경하려고 시도했지만 NSLog에 1 주라고 표시됩니다. 정확히 어디에 setMinimumDaysInFirstWeek를 정의해야합니까? 아마 어딘가에 현재 날짜를 정의해야합니까? – Noobass

+0

"첫 주 최소 일수"란 해당 연도의 1 일을 포함해야하는 일수를 의미합니다. 저는 1로 설정하면 1 월 1 일이 1 주일에도 1 일이 될 것이라고 가정합니다. NSCalendar 인스턴스를 만든 후에는 setter 메서드를 호출해야합니다. – millimoose

+0

2011 년 1 월 3 일 월요일이 월요일이었습니다 - 제정신주 번호 매기기 표준에서 2011 년 1 주차에 속합니다. – millimoose

관련 문제