我想要一个函数,该函数将周数作为输入并返回该特定周创建的所有 NSDate 的数组。
像这样:
-(NSArray*)allDatesInWeek:(int)weekNumber {
NSDate *today = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setFirstWeekday:2];
NSDateComponents *todayComp = [calendar components:NSYearCalendarUnit fromDate:today];
int currentyear = todayComp.year;
/* Calculate and return the date of weekNumber for current year */
如何以简单的方式做到这一点?
最佳答案
这个解决方案完全依赖于 NSCalendar,没有对用户的日历做任何假设。
-(NSArray*)allDatesInWeekContainingDate:(NSDate*)referenceDate {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger ordinalityOfInput = [calendar ordinalityOfUnit:NSWeekdayCalendarUnit
inUnit:NSWeekCalendarUnit
forDate:referenceDate];
NSDateComponents *componentsToAdd = [[NSDateComponents alloc] init];
componentsToAdd.day = -1 * (ordinalityOfInput - 1);
NSDate *startDate = [calendar dateByAddingComponents:componentsToAdd toDate:referenceDate options:0];
NSInteger numDaysInWeek = [calendar maximumRangeOfUnit:NSWeekdayCalendarUnit].length;
NSMutableArray *allDays = [NSMutableArray arrayWithCapacity:numDaysInWeek];
NSDateComponents *curDayOffset = [[NSDateComponents alloc] init];
for (int curDay=0; curDay < numDaysInWeek; curDay++) {
curDayOffset.day = curDay;
[allDays addObject:[calendar dateByAddingComponents:curDayOffset toDate:startDate options:0]];
}
return allDays;
}
关于objective-c - 一周内所有 NSDate 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10957200/