【发布时间】:2014-04-27 22:36:04
【问题描述】:
我是 ios 编程新手,我拼命想用参考年份获取一周的第一个和最后一个日期。
我尝试构建一个方法,但确实得到了奇怪的日期。
+ (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;
}
感谢任何帮助。
【问题讨论】:
标签: ios objective-c nsdate