2009-10-02 74 views
5

我正在尋找的是格式化時間間隔像這樣一類:如何在Cocoa中格式化時間間隔?

 
1 hour 3 minutes 
2 hours 5 minutes 12 seconds 
5 days 2 hours 

有什麼內置或支持這種時間間隔格式的圖書館嗎?

我想過做我自己,但也有種種問題:

  • 本地化
  • 非公曆。
+0

看看NSDateFormatter:https://developer.apple.com/library/mac/documentation/Cocoa/Reference /Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html – 2014-02-17 01:17:27

回答

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]; 
}