从NSArray获得即将到来的月份

时间:2015-06-04 13:35:02

标签: ios objective-c nsarray nsdate nsdateformatter

我有一个月份和年份的数组。对于前阵列{2015年1月,2015年2月,2015年6月,2015年9月}。我想得到当月的指数并得到它。如果没有当前月份,那么我想获得即将到来的最近一个月。在上面的例子中,我想得到2015年9月的指数。

非常感谢。

以下是获取当月指数的代码。

   if ([titleMonth isEqualToString:currentMonth])

    {

    indexNumber=[[self.dataByMonth valueForKey:@"title"]indexOfObject:currentMonth];

    }

这是从NSDate获得当前月份。

2 个答案:

答案 0 :(得分:1)

创建NSDataComponents

首先,您需要使用NSDateComponents对象填充数组。特别要注意this method

例如。为当月创建NSDateComponents。

NSDateComponents *dateComponents = [[NSCalendar currentCalendar]components:(NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:[NSDate date]]; 

  • 然后用这些组件填充你的阵列
  • 循环遍历数组,直到当前月份和年份等于或小于循环月份和年份。如果他们是平等的,那么你有你当前的月份。如果较小,则数组中的项目是下个月/年。

    这会起作用吗? 这是一个粗略的示例代码

    for(NSDateComponents *components in arrayOfMonths)
    {
        if(currentMonth.date == components.date)
            NSLog(@"current month is on the list");
        else if(currentMonth.date < components.date)
        {
            NSLog(@"this is the next month on the list");
            break;
        }
    }
    
  • 答案 1 :(得分:0)

    如果您的第一个阵列是{2015年1月,2015年2月,2015年5月,2015年9月}。保持所有月份的另一个阵列{2015年1月,2015年2月,2015年3月,2015年12月}。 如果当前月份是6月,那么第1阵列就不存在。获取第二个数组中的下一个元素并检查第一个数组。因此,检查七月是否在第一个数组中并继续此过程,直到找到匹配。所以,你将在2015年9月到达。

    不知道这是不是你想要的。