Ios 如何获取一年中所有周的所有开始日期

Ios 如何获取一年中所有周的所有开始日期,ios,nsdate,nsdatecomponents,Ios,Nsdate,Nsdatecomponents,我需要获得一年中所有周的所有开始日期,我尝试了以下代码,但我不知道如何准确计算每个周的实际开始日期 NSCalendar *cal = [NSCalendar currentCalendar]; NSDate *startDate = [NSDate date]; NSDateComponents *compStart = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit |NS

我需要获得一年中所有周的所有开始日期,我尝试了以下代码,但我不知道如何准确计算每个周的实际开始日期

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *startDate = [NSDate date];

NSDateComponents *compStart = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit  |NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit) fromDate:startDate];

[compStart setDay:1];
[compStart setMonth:1];

NSDate* weekstart=[cal dateFromComponents:compStart];

for(int i=0; i < 52; i++)
{
    NSDateComponents* moveWeeks=[[NSDateComponents alloc] init];
    moveWeeks.week=1;
    weekstart=[cal dateByAddingComponents:moveWeeks toDate:weekstart options:0];
    [arrayWeeks addObject:weekstart];

}
NSCalendar*cal=[NSCalendar当前日历];
NSDate*开始日期=[NSDate日期];
NSDateComponents*compStart=[cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit)fromDate:startDate];
[compStart setDay:1];
[compStart setMonth:1];
NSDate*weekstart=[cal dateFromComponents:compStart];
对于(int i=0;i<52;i++)
{
NSDateComponents*moveWeeks=[[NSDateComponents alloc]init];
移动周。周=1;
weekstart=[cal dateByAddingComponents:moveWeeks toDate:weekstart选项:0];
[arrayWeeks addObject:weekstart];
}

此链接回答了我的问题,我从0-51通过weekOffset并完成了工作

代码需要稍加修改,所以这里是修改后的代码,对我来说是正确的

-(void)initArrayWeeks
{
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *startDate = [NSDate date];

NSDateComponents *compStart = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit |         NSSecondCalendarUnit  |NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit) fromDate:startDate];

[compStart setDay:1];
[compStart setMonth:1];

NSDate* weekstart=[cal dateFromComponents:compStart];

for(int i = 0; i<51; i++)
{
    NSArray *days = [self daysInWeek:i fromDate:weekstart];
    [arrayWeeks addObject:days[0]];
}


}
-(NSArray*)daysInWeek:(int)weekOffset fromDate:(NSDate*)date
{
NSCalendar *calendar = [NSCalendar currentCalendar];

//ask for current week
NSDateComponents *comps = [[NSDateComponents alloc] init];
comps=[calendar components:NSWeekCalendarUnit|NSYearCalendarUnit fromDate:date];
//create date on week start
NSDate* weekstart=[calendar dateFromComponents:comps];
if (weekOffset>0) {
    NSDateComponents* moveWeeks=[[NSDateComponents alloc] init];
    moveWeeks.week=weekOffset;
    weekstart=[calendar dateByAddingComponents:moveWeeks toDate:weekstart options:0];
}

//add 7 days
NSMutableArray* week=[NSMutableArray arrayWithCapacity:7];
for (int i=1; i<=7; i++) {
    NSDateComponents *compsToAdd = [[NSDateComponents alloc] init];
    compsToAdd.day=i;
    NSDate *nextDate = [calendar dateByAddingComponents:compsToAdd toDate:weekstart options:0];
    [week addObject:nextDate];

}
return [NSArray arrayWithArray:week];
}
-(void)initArrayWeeks
{
NSCalendar*cal=[NSCalendar当前日历];
NSDate*开始日期=[NSDate日期];
NSDateComponents*compStart=[cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit)fromDate:startDate];
[compStart setDay:1];
[compStart setMonth:1];
NSDate*weekstart=[cal dateFromComponents:compStart];
对于(int i=0;i0){
NSDateComponents*moveWeeks=[[NSDateComponents alloc]init];
moveWeeks.week=weekOffset;
weekstart=[calendar Date ByAddingComponents:moveWeeks toDate:weekstart选项:0];
}
//加7天
NSMUTABLEARRY*周=[NSMUTABLEARRY阵列容量:7];

for(int i=1;i在for循环中,当前的结果是什么?数组周中放入了什么?