好的,我要从Rob Mayoff那里窃取一些代码:
他的原文(稍作修改):
-(NSString*) doit:(NSTimeInterval)timeInterval {
NSUInteger seconds = (NSUInteger)round(timeInterval);
NSString *result = [NSString stringWithFormat:@"%u hours, %u minutes", seconds / 3600, (seconds / 60) % 60];
return result;
}
简单的修改以返回有/没有“小时”:
-(NSString*) doit:(NSTimeInterval)timeInterval {
NSString* result = nil;
NSUInteger seconds = (NSUInteger)round(timeInterval);
NSUInteger hours = seconds / 3600;
NSUInteger minutes = (seconds / 60) % 60;
if (hours > 0) {
result = [NSString stringWithFormat:@"%u hours, %u minutes", hours, minutes];
}
else {
result = [NSString stringWithFormat:@"%u minutes", minutes];
}
return result;
}
再次,但消除了if
:
-(NSString*) doit:(NSTimeInterval)timeInterval {
NSUInteger seconds = (NSUInteger)round(timeInterval);
NSUInteger hours = seconds / 3600;
NSUInteger minutes = (seconds / 60) % 60;
NSString* result = hours ? [NSString stringWithFormat:@"%u hours, %u minutes", hours, minutes] : [NSString stringWithFormat:@"%u minutes", minutes];
return result;
}
现在,我可以使用 将其归结为一个荒谬的 1-liner ,
,但这有点愚蠢,并且不会使代码更清晰。
(请注意,由于 iOS 12/24 “fechure”,所有使用 NSDateFormatter 的方案都被破坏了。)