Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Xcode_Calendar_Nsdate_Ios9.2 - Fatal编程技术网

iOS:从发布日期开始的一个月

iOS:从发布日期开始的一个月,ios,xcode,calendar,nsdate,ios9.2,Ios,Xcode,Calendar,Nsdate,Ios9.2,从日期获取weekoffmonth有一个小问题。这是一个示例代码 NSDateFormatter *dateformate=[[NSDateFormatter alloc]init]; [dateformate setDateFormat:@"dd/MM/yyyy"]; // Date formater NSDate *dateTest1 = [dateformate dateFromString:@"25/07/2016"]; //Week no: 5 NSDate *dateTest2 =

从日期获取
weekoffmonth
有一个小问题。这是一个示例代码

NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
[dateformate setDateFormat:@"dd/MM/yyyy"]; // Date formater

NSDate *dateTest1 = [dateformate dateFromString:@"25/07/2016"]; //Week no: 5
NSDate *dateTest2 = [dateformate dateFromString:@"01/08/2016"]; //Week no: 1
NSDate *dateTest3 = [dateformate dateFromString:@"08/08/2016"]; //Week no: 2
NSDate *dateTest4 = [dateformate dateFromString:@"15/08/2016"]; //Week no: 3
NSDate *dateTest5 = [dateformate dateFromString:@"22/08/2016"]; //Week no: 4
NSDate *dateTest6 = [dateformate dateFromString:@"29/08/2016"]; //Week no: 5
NSDate *dateTest7 = [dateformate dateFromString:@"05/09/2016"]; //Week no: 6

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest1];
dateString = [dateformate stringFromDate:dateTest1];
NSLog(@"dateTest1 -> %@",dateString); //output : dateTest1 -> 25/07/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 4

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest2];
dateString = [dateformate stringFromDate:dateTest2];
NSLog(@"dateTest2 -> %@",dateString); //output : dateTest2 -> 01/08/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 1

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest3];
dateString = [dateformate stringFromDate:dateTest3];
NSLog(@"dateTest3 -> %@",dateString); //output : dateTest3 -> 08/08/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 2

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest4];
dateString = [dateformate stringFromDate:dateTest4];
NSLog(@"dateTest4 -> %@",dateString); //output : dateTest4 -> 15/08/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 3

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest5];
dateString = [dateformate stringFromDate:dateTest5];
NSLog(@"dateTest5 -> %@",dateString); //output : dateTest5 -> 22/08/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 4

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest6];
dateString = [dateformate stringFromDate:dateTest6];
NSLog(@"dateTest6 -> %@",dateString); //output : dateTest6 -> 29/08/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 5

components = [calendar components:NSCalendarUnitWeekOfMonth fromDate:dateTest7];
dateString = [dateformate stringFromDate:dateTest7];
NSLog(@"dateTest7 -> %@",dateString); //output : dateTest7 -> 05/09/2016
NSLog(@"Week no: %ld",(long)[components weekOfMonth]); //output : Week no: 2
如您所见,
dateTest1
应该是
Week no=5
而不是
Week no=4
。至于其他日期,正如我所见和你所见,没有问题

我需要正确的
WeekOfMonth
来正确设置我的
FFCalendar

使用上述代码,您可以获得一年中的工作日。现在,您需要计算该月第一个日期的年份以及需要查找的日期。
现在,为了得到一个工作日和一个工作日的差值+1,根据raj Agrawal提出的解决方案,我制作了这个效果良好的解决方案

NSDate *date = [[FFDateManager sharedManager] currentDate];

NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
[dateformate setDateFormat:@"dd/MM/yyyy"]; // Date formater

NSString *dateString = [dateformate stringFromDate:date];
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* dateComponent = [calendar components:NSWeekOfYearCalendarUnit|NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit fromDate:date];
NSInteger weekOfYearCurrent =(long)[dateComponent weekOfYear];
dateString = [dateformate stringFromDate:date];
NSLog(@"dateCurrent -> %@",dateString);
NSLog(@"weekOfYearCurrent: %ld",(long)weekOfYearCurrent);

NSDate *dateFirstMonth = [dateformate dateFromString:[NSString stringWithFormat:@"01/%d/2016", (int)[dateComponent month]]];
dateComponent = [calendar components:NSWeekOfYearCalendarUnit|NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit fromDate:dateFirstMonth];
NSInteger weekOfYearFirstDayOfMonth =(long)[dateComponent weekOfYear];
dateString = [dateformate stringFromDate:dateFirstMonth];
NSLog(@"dateFirstMonth -> %@",dateString);
NSLog(@"weekOfYearFirstDayOfMonth: %ld",(long)weekOfYearFirstDayOfMonth);

NSInteger NumberWeekOfMonth = (weekOfYearCurrent - weekOfYearFirstDayOfMonth) + 1;
NSLog(@"NumberWeekOfMonth: %ld",(long)NumberWeekOfMonth);

谢谢你的回答。使用weekOfMonth不取决于我,它取决于FFCalendar。在方法dateChanged上的FFWeekCalendarView上,我需要在这里正确设置WeekOfMonth,因为它与WeekOfMonth一起工作。我想我不能在FFCalendar中使用weekOfYear而不是weekOfMonth。抱歉,现在我明白了!它工作得很好。感谢您月周返回1-4或5,年周应返回1-52或53
NSDate *date = [[FFDateManager sharedManager] currentDate];

NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
[dateformate setDateFormat:@"dd/MM/yyyy"]; // Date formater

NSString *dateString = [dateformate stringFromDate:date];
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* dateComponent = [calendar components:NSWeekOfYearCalendarUnit|NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit fromDate:date];
NSInteger weekOfYearCurrent =(long)[dateComponent weekOfYear];
dateString = [dateformate stringFromDate:date];
NSLog(@"dateCurrent -> %@",dateString);
NSLog(@"weekOfYearCurrent: %ld",(long)weekOfYearCurrent);

NSDate *dateFirstMonth = [dateformate dateFromString:[NSString stringWithFormat:@"01/%d/2016", (int)[dateComponent month]]];
dateComponent = [calendar components:NSWeekOfYearCalendarUnit|NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit fromDate:dateFirstMonth];
NSInteger weekOfYearFirstDayOfMonth =(long)[dateComponent weekOfYear];
dateString = [dateformate stringFromDate:dateFirstMonth];
NSLog(@"dateFirstMonth -> %@",dateString);
NSLog(@"weekOfYearFirstDayOfMonth: %ld",(long)weekOfYearFirstDayOfMonth);

NSInteger NumberWeekOfMonth = (weekOfYearCurrent - weekOfYearFirstDayOfMonth) + 1;
NSLog(@"NumberWeekOfMonth: %ld",(long)NumberWeekOfMonth);