我想创建一个能够计算工作时间的应用程序(以及其他类似flexitime的东西)。
通过特定格式获取flexitime的字符串(这是一个NSTimeInterval)非常简单,我已经为此编写了一个方法,可以添加特定的格式:
+ (NSString *)stringForTimeInterval: (NSTimeInterval) interval withFormat: (NSString *)format
此方法为@"25:00"
flexitime
和90000.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;
}