2009-10-02 14 views
5

Sto cercando una classe che formatta intervalli di tempo come questo:Come posso formattare gli intervalli di tempo in Cocoa?

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

c'è qualcosa incorporato o una libreria che supporta questo tipo di tempo formattazione intervallo?

ho pensato di fare io stesso, ma ci sono tutti i tipi di problemi:

  • localizzazione
  • calendari non gregoriani.
+0

Date un'occhiata a NSDateFormatter: https://developer.apple.com/library/mac/documentation/Cocoa/Reference /Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html –

risposta

1

Una vecchia domanda, ma per chi si imbatte in questo, controlla NSDateComponentsFormatter.

Per esempio, ecco un metodo NSDate categoria dal mio DejalFoundationCategories progetto open source:

+ (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]; 
} 
Problemi correlati