일요일에 시스템 캘린더를 설정하면 아래 코드는 그것이 새로운 주라고 판단하고 다음 주를 종일 표시합니다. 예 : 이번 주는 39 주입니다. 일요일 10 월 28 일에 내 코드는 새로운 주라고 생각하고 다음 주 (40 주)의 모든 요일을 39 일 대신 39 일로 표시합니다. (난 토요일 NOT 일요일 월요일부터 일요일까지 일주일 범위를 살) 는시스템 캘린더가 일요일에있을 때 NSCalendar는 새 주라고 생각합니다.
NSDate *currentDate = [NSDate date];
NSCalendar *myCalendar = [NSCalendar currentCalendar];
[myCalendar setLocale:[NSLocale systemLocale]];
NSDateComponents *currentComps = [myCalendar components:NSYearForWeekOfYearCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:currentDate];
int thisWeeksNumber = currentComps.weekOfYear;
NSLog(@"1 %d", thisWeeksNumber);
[myCalendar setFirstWeekday:2];
[currentComps setWeekday:2];
NSDate *firstDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:3];
NSDate *secondDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:4];
NSDate *thirdDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:5];
NSDate *fourthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:6];
NSDate *fifthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:7];
NSDate *sixthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:1];
NSDate *seventhDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];
myDateFormatter.dateFormat = @"yyyy-MM-dd";
NSString *firstStr = [myDateFormatter stringFromDate:firstDayOfTheWeek];
NSString *secondStr = [myDateFormatter stringFromDate:secondDayOfTheWeek];
NSString *thirdStr = [myDateFormatter stringFromDate:thirdDayOfTheWeek];
NSString *fourthStr = [myDateFormatter stringFromDate:fourthDayOfTheWeek];
NSString *fifthStr = [myDateFormatter stringFromDate:fifthDayOfTheWeek];
NSString *sixthStr = [myDateFormatter stringFromDate:sixthDayOfTheWeek];
NSString *seventhStr = [myDateFormatter stringFromDate:seventhDayOfTheWeek];
NSLog(@"\n %@ \n %@ \n %@ \n %@ \n %@ \n %@ \n %@", firstStr, secondStr, thirdStr, fourthStr, fifthStr, sixthStr, seventhStr);
내 로그 보여줍니다 2014년 9월 21일 22 : 40 : 36.040 NSCalendarProject [38667을 : 90B] 2014-09- 22 2014년 9월 23일 2014년 9월 24일 2014년 9월 25일 2014년 9월 26일 2014년 9월 27일 2014년 9월 28일
당신이 볼 수 있듯이, 날짜 내가 이 일은 9 월 21 일 일요일에 있었고 다음 주 모든 요일을 표시합니다 (날짜를 설정하면 똑같습니다). 9 월 28 일)
답변 해 주셔서 감사합니다. 나는 지금 문제를 해결했다! 그리고 이것은 2014 년 동안 만 작동합니다. – Dridia
도움이되기를 기쁘게 생각합니다. 어떤 의미에서 2014 년으로 만 작동합니까? 2015 년 1 월 일요일 (예 : 일요일)에 넣으면 2014 년 12 월 22 일 월요일에 2015 년 1 월 4 일에 일요일에 나옵니다. 올바른 행동이 아닌가요? – Tuslareb