【问题标题】:Get the upcoming month from NSArray从 NSArray 获取下个月
【发布时间】:2015-06-04 13:35:01
【问题描述】:

我有一个包含某个月份和年份的数组。对于前数组 {2015 年 1 月,2015 年 2 月,2015 年 6 月,2015 年 9 月}。我想获取当月的索引并且正在获取它。如果没有当前月份,那么我想获取即将到来的最近一个月。在上面的示例中,我想获取 2015 年 9 月的索引。

非常感谢您的帮助。

下面是获取当月索引的代码。

   if ([titleMonth isEqualToString:currentMonth])

    {

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

    }

这里我从 NSDate 获取当前月份。

【问题讨论】:

  • 您想要upcoming 月份吗,就像下个月一样?还是最近一个月?和上个月一样?
  • 数组中的下个月,查看上面的示例,我想要 9 月的索引号,而不是 7 月的索引号。
  • 你能用NSDateComponents数组代替NSString数组吗?
  • 如何与 NSDateComponents 一起工作?
  • ... 或者只使用NSDateFormatter。你为什么会得到一个字符串数组?

标签: ios objective-c nsarray nsdate nsdateformatter


【解决方案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;
        }
    }
    
  • 【讨论】:

      【解决方案2】:

      如果您的第一个数组是 {Jan 2015,feb 2015, May 2015, september 2015}。保留另一个数组 {2015 年 1 月,2015 年 2 月,2015 年 3 月,..... 2015 年 12 月}。 如果当前月份是六月并且它不在第一个数组中。取第二个数组中的下一个元素并检查第一个数组。因此,检查 7 月是否存在于第一个数组中并继续此过程,直到找到匹配项。因此,您将获得 2015 年 9 月。

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

      【讨论】:

      • 是的,但是当月之后您将如何检查?
      • 您拥有第二个数组中所有月份的列表。如果六月不在第一个数组中,则从第二个数组中取出 7 月并检查第一个数组,然后从第二个数组中取出 aug 并检查第一个数组。继续此过程,从第二个数组中获取下一个元素。
      • 能否请您添加一些示例代码。这会很有帮助。
      • 您将如何从第二个数组中获取下个月以检查第一个数组?
      • 'currentIndex = [array2 indexOfObject:currentMonth]; while(currentIndex
      猜你喜欢
      • 1970-01-01
      • 2012-04-06
      • 2011-02-11
      • 2014-10-16
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      相关资源
      最近更新 更多