2009-10-02 12 views
5

Ich bin für eine Klasse suchen, die Zeitintervalle wie folgt formatiert:Wie kann ich Zeitintervalle in Cocoa formatieren?

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

Gibt es etwas eingebaute oder eine Bibliothek, die diese Art von Zeitintervall-Formatierung unterstützt?

Ich dachte über es selbst zu tun, aber es gibt alle Arten von Problemen:

  • Lokalisierung
  • Non-gregorianischen Kalender.
+0

einen Blick auf NSDateFormatter Nehmen: https://developer.apple.com/library/mac/documentation/Cocoa/Reference /Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html –

Antwort

1

Eine alte Frage, aber für jeden, der darauf stolpert, überprüfen Sie NSDateComponentsFormatter.

Zum Beispiel, hier ist ein NSDate Kategorie Methode von meinem DejalFoundationCategories Open-Source-Projekt:

+ (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]; 
} 
Verwandte Themen