NSString+TimeCategory.h
//------------------------------------------------
#import <foundation foundation.h="">
@interface NSString (TimeCategory)
+ (NSString *)stringWithTime:(NSTimeInterval)time;
- (NSTimeInterval)timeValue;
@end
//------------------------------------------------
//NSString+TimeCategory.m
//------------------------------------------------
#import "NSString+TimeCategory.h"
@implementation NSString (TimeCategory)
+ (NSString *)stringWithTime:(NSTimeInterval)time {
BOOL isPositive;
NSInteger timeInt;
if (time > 3600 * 24 || time < - 3600 * 24)
return nil;
if (time < 0) {
timeInt = (NSInteger)-time;
isPositive = NO;
} else {
timeInt = (NSInteger)time;
isPositive = YES;
}
NSInteger hour = timeInt/3600;
NSInteger minute = (timeInt%3600)/60;
NSInteger second = (timeInt%3600)%60;
if (hour > 0) {
if (isPositive) {
return [NSString stringWithFormat:@"%d%d:%d%d:%d%d",
hour/10, hour%10, minute/10, minute%10, second/10, second%10];
} else {
return [NSString stringWithFormat:@"-%d%d:%d%d:%d%d",
hour/10, hour%10, minute/10, minute%10, second/10, second%10];
}
} else {
if (isPositive) {
return [NSString stringWithFormat:@"%d%d:%d%d", minute/10, minute%10, second/10, second%10];
} else {
return [NSString stringWithFormat:@"-%d%d:%d%d", minute/10, minute%10, second/10, second%10];
}
}
}
- (NSTimeInterval)timeValue {
NSInteger hour = 0, minute = 0, second = 0;
NSArray *sections = [self componentsSeparatedByString:@":"];
NSInteger count = [sections count];
second = [[sections objectAtIndex:count - 1] integerValue];
minute = [[sections objectAtIndex:count - 2] integerValue];
if (count > 2) {
hour = [[sections objectAtIndex:0] integerValue];
}
return hour * 3600 + minute * 60 + second;
}
@end
</foundation>