2012-09-15 2 views
1
-(NSInteger)getTheUltimateWeekOfAYear:(NSInteger)year 
{ 
    NSDateComponents *comps = [NSDateComponents alloc]; 
    [comps setDay:31]; 
    [comps setMonth:12]; 
    [comps setYear:year]; 

    NSCalendar *usersCalendar =[[NSLocale currentLocale] objectForKey:NSLocaleCalendar]; 
    NSDate *date = [usersCalendar dateFromComponents:comps]; 

    NSDateComponents *weekComps = 
    [usersCalendar components:NSWeekCalendarUnit fromDate:date]; 

    return [weekComps week]; 
} 

`iOS에서 일주일에 53을 제외한 1을 반환하는 이유는 무엇입니까? 아이폰 OS 5.1 시뮬레이터에서 실행할 경우

안녕, 이 조각은 잘못 1을 반환합니다. 나는 그것이 53을 반환해야한다고 생각합니다. 내가 뭘 잘못하고 있니? BTW 내 시뮬레이터는 그레고리력으로 사전 설정되어 있습니다. /John

+3

그것은 당신의 상황에 따라 달라집니다 http://en.wikipedia.org/wiki/Seven-day_week#Week_numbering – rene

+0

@rene :이 질문에 대한 정답입니다. 답변으로 게시 할 수 있습니까? – Aravindhan

답변

3

상황에 따라 다릅니다. 위키 피 디아에서 :

ISO 8601에는 ISO 주 날짜 시스템이 포함되어 있습니다. 매주 월요일에 시작되며 매주 목요일이 포함 된 연도와 연결됩니다 (따라서 1 년이 길면 주말 금요일 - 일요일, 그 다음 해의 주 번호 하나가 시작됩니다). 예를 들어, 2004 년 1 월 1 일 (2004W01)은 2004 년 1 월 1 일 이었기 때문에 2003 년 12 월 29 일 월요일부터 2004 년 1 월 4 일 일요일까지 실행되었습니다. 2005 년 1 월 1 일 (2005W01)은 2005 년 1 월 3 일 월요일부터 2005 년 1 월 9 일 일요일 그 목요일은 2005 년 1 월 6 일이었고 2005 년 첫 번째 목요일 이었기 때문에 1 년 중 가장 많은 주 숫자는 52 또는 53 (2004 년에는 53)이었습니다.

그러나 일부 국가에서는 번호 매기기 시스템이 ISO 표준과 다릅니다.

wikipedia

+0

이 답변을 보내 주셔서 감사 드리며 감사드립니다. 이제, 모든 코드가 올바르게 작동하도록 코드를 변경해야합니까? –