2
저는 프로그래밍에 익숙하며 언급 한 해의 첫 주와 마지막 요일을 필사적으로 얻으려고합니다.주어진 주와 연도의 첫 번째 날짜와 마지막 날짜를 얻는 방법?
나는 방법을 만들려고했지만 이상한 날짜를 얻지 못했습니다.
+ (NSArray*)getStartDateOfWeek : (NSInteger)weekNumber withYear:(NSInteger)year {
NSMutableArray *result = [[NSMutableArray alloc]init];
// Week Start Date
NSCalendar *gregorianStart = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *componentsStart = [[NSDateComponents alloc] init];
[componentsStart setWeekOfYear:weekNumber];
[componentsStart setYear:year];
int startDayOfWeek = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:[gregorianStart dateFromComponents:componentsStart]] weekday];
[componentsStart setDay:([componentsStart day] - ((startDayOfWeek) - 2))];
NSDate *beginningOfWeek = [gregorianStart dateFromComponents:componentsStart];
// Week End Date
NSCalendar *gregorianEnd = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *componentsEnd = [[NSDateComponents alloc]init];
[componentsStart setWeekOfYear:weekNumber];
[componentsStart setYear:year];
int endDayOfWeek = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:[gregorianEnd dateFromComponents:componentsEnd]] weekday];
[componentsEnd setDay:([componentsEnd day]+ (7 - endDayOfWeek) + 1)]; // for end day of the week
NSDate *endOfWeek = [gregorianEnd dateFromComponents:componentsEnd];
[result insertObject:beginningOfWeek atIndex:0];
[result insertObject:endOfWeek atIndex:1];
return result;
}
아무쪼록 잘 부탁드립니다.
- 당신이이 일에 방법을 결합하고 싶었다면
, 나는 오히려
NSArray
보다는NSDictionary
을 사용합니다. NSDate + NSCalendar는 objective-c의 혼란스러운 부분입니다. 그것은 작동 ... – Moonstar