目标C:通过格式化的String获取NSTimeInterval

时间:2014-04-15 09:24:51

标签: ios objective-c nsstring formatting nstimeinterval

我想创建一个能够计算工作时间的应用程序(以及其他类似flexitime的东西)。

通过特定格式获取flexitime的字符串(这是一个NSTimeInterval)非常简单,我已经为此编写了一个方法,可以添加特定的格式:

+ (NSString *)stringForTimeInterval: (NSTimeInterval) interval withFormat: (NSString *)format

此方法为@"25:00" flexitime90000.0 @"-25:00"返回-90000.0。这两个示例的格式为@"HH:mm"

格式是一个看起来像@"HH:mm"的字符串。 "HH"是小时(可以是任何正整数或负整数但通常在-300和300之间)并且"mm"是分钟(0 - 59,数字0 - 9得到前导零)。

现在我想编写一个方法来获取用已知格式格式化的字符串的NSTimeInterval。

+ (NSTimeInterval)timeIntervalForString: (NSString *)timeString withFormat: (NSString *)format

我真的不知道该怎么做。我不能使用普通的NSDateFormatter,因为弹性时间可能超过23:59且小于00:00。 还必须有TimeFormat,因为我想让用户可以轻松切换他们的格式。 我还想在几秒钟内添加新的timeFormat(实际上我只需要向NSString添加一个新的NSArray以在整个应用中添加新的格式。)

我也尝试过正则表达式,但我发现无法用如何解决它。

有人知道如何解决这个问题吗?


编辑:
这是我使用特定格式获取小时和分钟字符串的方法:

+ (NSString *)stringForTimeInterval: (NSTimeInterval) interval withFormat: (NSString *)format
{    
    // minutes are never negative!
    int minutes = abs((int)interval / 60 % 60);

    int hours = (int)interval / 3600;

    // replacing 'HH' and 'mm'
    NSString *time = [[format stringByReplacingOccurrencesOfString:@"HH" withString:[NSString stringWithFormat:@"%0.2d", hours]] stringByReplacingOccurrencesOfString:@"mm" withString:[NSString stringWithFormat:@"%0.2d", minutes]];

    return time;
}

0 个答案:

没有答案