繁体   English   中英

在几分钟内将HH:MM NSString转换为NSInteger

[英]Convert HH:MM NSString to NSInteger with minutes

我有几个包含持续时间的NSStrings ,它们看起来像这样: @"03:40", @"08:40" -时间是动作的持续时间。 我希望每个分钟都有一个int ,说“ 01:20”是“ 80”(分钟),以便以后将它们相互比较。

您如何在Objective-C中管理这个简单的事情? 提前致谢

编辑:

试过这个,无济于事。 我想要一种完全不同的方法,轻松而轻松。

- (NSMutableArray *)sortResultsByTime
{
    NSMutableArray *sortedTrips = [NSMutableArray arrayWithArray:[_tweets sortedArrayUsingComparator: ^(id trip1, id trip2) {

        double time1 = [self durationFromString:[(Tweet *) trip1 flightDuration]];
        double time2 = [self durationFromString:[(Tweet *) trip1 flightDuration]];
        NSLog(@"What's time1? It's %f", time1);
        NSLog(@"What's time2? It's %f", time2);

        if (time1 < time2) {
            return (NSComparisonResult)NSOrderedDescending;
        }

        if (time1 > time2) {
            return (NSComparisonResult)NSOrderedAscending;
        }

        return (NSComparisonResult)NSOrderedSame;
    }]];

    return sortedTrips;
}

- (double)durationFromString:(NSString *)durationString
{
    NSArray *durationArray = [durationString componentsSeparatedByString:@":"];

    return [durationArray[0] doubleValue] + [durationArray[1] doubleValue] / 60.0;
}

您发布的代码试图将字符串转换为小时数,而不是分钟数。

你要:

return [durationArray[0] doubleValue] * 60 + [durationArray[1] doubleValue];

编辑:原始代码失败,因为此行:

double time2 = [self durationFromString:[(Tweet *) trip1 flightDuration]];

需要是:

double time2 = [self durationFromString:[(Tweet *) trip2 flightDuration]];

更新:由于OP希望采用不同的方法,为什么不简单地这样做:

NSString *time1 = [(Tweet *) trip1 flightDuration];
NSString *time2 = [(Tweet *) trip2 flightDuration];

return [time1 compare:time2];

分割为:使用-[NSString componentsSeparatedByString:] ),访问每个元素(使用-[NSArray objectAtIndex: ,然后转换为整数( -[NSString intValue] ),最后相乘并相加。

我不明白为什么您认为其他答案过于复杂,但是如果您想要一个没有数组的解决方案,您可以:

- (double)durationFromString:(NSString *)s
{
    int hr = 0, min = 0;
    NSScanner *scn = [NSScanner scannerWithString:s];
    [scn scanInt:&hr];
    [scn scanString:@":" intoString:NULL];
    [scn scanInt:&min];
    return hr * 60 + min;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM