-6

我是iOS开发的开始。我有一个如下数组:

NSMutableArray *array = [[NSMutableArray alloc] init]; 

[array addObject:[NSNumber numberWithInt:15:00]];
[array addObject:[NSNumber numberWithInt:20:05]];
[array addObject:[NSNumber numberWithInt:1:20]];
[array addObject:[NSNumber numberWithInt:3:40]];

我需要一个标签来显示哪个数组对象是下一个大于我当前时间的对象。例如,如果我现在的时间是:2:00,我的标签应该只显示下一个更大的数字,3:40。没有比这更大的数字。

我如何识别这一更大的元素?

4

3 回答 3

2

首先,您必须了解 15:00 不是 int。

使用NSDate,而不是NSNumber

于 2012-08-11T15:47:37.563 回答
2

首先,你为什么要添加NSNumbers到你的NSArray?这些应该是NSDate对象。

如果你这样做,你可以像这样使用 NSDate 的比较方法:

[date1 compare: date2];

在您的情况下,如果您想在当前时间之后立即显示时间,我会这样做:

NSDate *currentTime = [NSDate dateWithTimeIntervalSinceNow:0];
NSUInteger smallestInterval = -1;
NSInteger smallestDateIndex = -1;

for(int i = 0; i < array.count; i++){
    if([currentTime timeIntervalSinceDate:[array objectAtIndex:i]] <= 0){
    continue;
    }

    if(smallestDateIndex == -1){
        smallestDateIndex = i;
        smallestInterval = [currentTime timeIntervalSinceDate:[array objectAtIndex:i]];
    } else if([currentTime timeIntervalSinceDate:[array objectAtIndex:i]] < smallestInterval){
    smallestInterval = [currentTime timeIntervalSinceDate:[array objectAtIndex:i]];
    smallestDateIndex = i;
    }
}

if(smallestDateIndex > -1){
    NSDateFormatter *formatter = [[NSDateFormatter alloc] initWithDateFormat:@"HH:mm"];
    myLabel.text = [formatter stringFromDate:[array objectAtIndex:smallestDateIndex]];
}
于 2012-08-11T15:45:01.357 回答
-1

您可以在表格中显示四次。

ss

代码如下:

array = [NSMutableArray array];
NSDate *date;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSString *s = @"HH:mm";
dateFormatter.dateFormat = s;

date = [dateFormatter dateFromString:@"15:00"];
[array addObject:date];

date = [dateFormatter dateFromString:@"20:05"];
[array addObject:date];

date = [dateFormatter dateFromString:@"1:20"];
[array addObject:date];

date = [dateFormatter dateFromString:@"3:40"];
[array addObject:date];

要比较日期,可以使用 NSDate 类的 campare 方法。

NSComparisonResult result = [dt1 compare:dt];
switch(result)
{
case NSOrderedAscending:
    // dt is bigger than dt1
    break;
case NSOrderedDescending:
    // dt is smaller than dt1
    break;
case NSOrderedSame:
    // dt is same with dt1
    break;
}

您可以从 GitHub 下载项目并运行它。

https://github.com/weed/p120812_NSDateSumple

于 2012-08-11T16:15:03.667 回答