当我的系统日历设置在星期日时,下面的代码认为这是一个新的一周,并在接下来的几周显示所有日子。 例如 本周是39周。 9月28日我的代码认为这是一个新的一周,并显示下周(第40周)的所有日子,而不是第39周,因为我希望它是。 (我住的地方1周范围从周一到周日不星期日至星期六)当系统日历在星期日时,NSCalendar认为这是一个新的星期
NSDate *currentDate = [NSDate date];
NSCalendar *myCalendar = [NSCalendar currentCalendar];
[myCalendar setLocale:[NSLocale systemLocale]];
NSDateComponents *currentComps = [myCalendar components:NSYearForWeekOfYearCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:currentDate];
int thisWeeksNumber = currentComps.weekOfYear;
NSLog(@"1 %d", thisWeeksNumber);
[myCalendar setFirstWeekday:2];
[currentComps setWeekday:2];
NSDate *firstDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:3];
NSDate *secondDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:4];
NSDate *thirdDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:5];
NSDate *fourthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:6];
NSDate *fifthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:7];
NSDate *sixthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:1];
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);
我的日志显示: 2014年9月21日22:40:36.040 NSCalendarProject [38667:90B] 2014-09- 22 2014年9月23日 2014年9月24日 2014年9月25日 2014年9月26日 2014-09-27 2014年9月28日
正如你可以看到,日期当我跑了这是9月21日星期日,它显示下周的所有日子(如果我设置日期9月28日)
谢谢你的回答!我现在已经解决了这个问题!而且这只会在2014年才有效。 – Dridia 2014-10-02 21:23:52
不客气,很高兴有所帮助。从什么意义上说它只能在2014年发挥作用?例如,当我(例如)2015年1月4日星期日,我将于2014年12月22日星期一到2015年1月4日星期日。是不是正确的行为? – Tuslareb 2014-10-03 19:16:00