我正在寻找一个格式化时间间隔的类:
1 hour 3 minutes 2 hours 5 minutes 12 seconds 5 days 2 hours
是否有任何内置函数或库支持这种时间间隔格式化?
我想过自己做,但有各种各样的问题:
答案 0 :(得分:1)
一个老问题,但对于任何偶然发现此事的人,请查看NSDateComponentsFormatter
。
例如,这是我的DejalFoundationCategories开源项目中的NSDate
类别方法:
+ (NSString *)dejal_relativeStringForTimeInterval:(NSTimeInterval)timeInterval style:(NSDateComponentsFormatterUnitsStyle)unitsStyle maximumUnits:(NSInteger)maximumUnits keepZero:(BOOL)keepZero defaultValue:(NSString *)defaultValue;
{
// If more than 10 years, assume distant past or future:
if (abs(timeInterval) > 60 * 60 * 24 * 365 * 10)
{
return defaultValue;
}
NSDateComponentsFormatter *formatter = [NSDateComponentsFormatter new];
formatter.unitsStyle = unitsStyle;
formatter.maximumUnitCount = maximumUnits;
if (keepZero)
{
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorDropLeading | NSDateComponentsFormatterZeroFormattingBehaviorDropMiddle;
}
else
{
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorDropAll;
}
return [formatter stringFromTimeInterval:timeInterval];
}