Dav*_*vid 1 objective-c nsdate ios ios5
我想有一个函数,它需要一个星期的数字作为输入,并返回由此特定周产生的所有NSDates的数组.
像这样的东西:
-(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 */
Run Code Online (Sandbox Code Playgroud)
}
如何以简单的方式完成?
此解决方案完全依赖于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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |