Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 显示当前周天数和日期_Ios_Objective C_Nsdate_Nscalendar - Fatal编程技术网

Ios 显示当前周天数和日期

Ios 显示当前周天数和日期,ios,objective-c,nsdate,nscalendar,Ios,Objective C,Nsdate,Nscalendar,我有点问题。我希望显示当前一周中所有带日期的日期(因为我写的是第38周(公历))。我所拥有的是好的,但是它没有显示正确的日期。例如: 本周周一是9月15日,周日是9月21日。 当我将一周的第一天设置为9月14日的星期日时 NSDate *currentDate = [NSDate date]; NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateC

我有点问题。我希望显示当前一周中所有带日期的日期(因为我写的是第38周(公历))。我所拥有的是好的,但是它没有显示正确的日期。例如: 本周周一是9月15日,周日是9月21日。 当我将一周的第一天设置为9月14日的星期日时

NSDate *currentDate = [NSDate date];
NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *currentComps = [myCalendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekOfYearCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:currentDate];
int thisWeeksNumber = currentComps.weekOfYear;
NSLog(@"1  %d", thisWeeksNumber); //This displays the correct week.

[currentComps setWeekday:1];
NSDate *firstDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:2];
NSDate *secondDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:3];
NSDate *thirdDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:4];
NSDate *fourthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:5];
NSDate *fifthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:6];
NSDate *sixthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:7];
NSDate *seventhDayOfTheWeek = [myCalendar dateFromComponents:currentComps];

NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];
myDateFormatter.dateFormat = @"yyyy-MM-dd";
NSString *firstStr = [myDateFormatter stringFromDate:firstDayOfTheWeek];
NSString *secondStr = [myDateFormatter stringFromDate:secondDayOfTheWeek];
NSString *thirdStr = [myDateFormatter stringFromDate:thirdDayOfTheWeek];
NSString *fourthStr = [myDateFormatter stringFromDate:fourthDayOfTheWeek];
NSString *fifthStr = [myDateFormatter stringFromDate:fifthDayOfTheWeek];
NSString *sixthStr = [myDateFormatter stringFromDate:sixthDayOfTheWeek];
NSString *seventhStr = [myDateFormatter stringFromDate:seventhDayOfTheWeek];

NSLog(@"\n %@ \n %@ \n %@ \n %@ \n %@ \n %@ \n %@", firstStr, secondStr, thirdStr, fourthStr, fifthStr, sixthStr, seventhStr);
它应该显示9月15日至9月21日,但显示9月14日(星期日)至9月21日(星期六)


提前谢谢

如果您查看文档,它会执行它应该执行的操作:

:

当您调用
setWeekDay
-1表示周日,因此如果您需要从周一开始,您的第一个调用应该是
setWeekDay:2

更新:

至于在第一天之后的所有连续几天,我建议实现类似的功能(在代码中插入此函数):

并使用此函数从一周开始的当天起添加1-6。基本上替换所有第二天和其他天代码:

[currentComps setWeekday:2];
NSDate *secondDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
以下是:

NSDate *secondDayOfTheWeek = [self dateByAddingDays:1 toDate:firstDayOfTheWeek];
NSDate *thirdOfTheWeek = [self dateByAddingDays:2 toDate:firstDayOfTheWeek];
... 

是的,我试过了。但是我怎样才能得到9月21日的星期日呢?因为一周不是从星期天开始的。我不知道我应该如何在我的代码中实现它。@Dridia:我添加了你需要复制粘贴到代码中的确切代码。我不知道你是如何做到的@sha!但我工作起来很有魅力!非常感谢你!!今天(星期日)此代码将在接下来的几周内执行。所以,今天仍然是第38周,但它显示了第39周的所有日期。为什么会这样?
NSDate *secondDayOfTheWeek = [self dateByAddingDays:1 toDate:firstDayOfTheWeek];
NSDate *thirdOfTheWeek = [self dateByAddingDays:2 toDate:firstDayOfTheWeek];
...