2009-10-02 8 views
5

Je suis à la recherche d'une classe qui formate des intervalles de temps comme celui-ci:Comment puis-je formater des intervalles de temps dans Cocoa?

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

Y at-il intégré ou une bibliothèque qui prend en charge ce type de temps de mise en forme d'intervalle?

Je pensais à le faire moi-même, mais il y a toutes sortes de problèmes:

  • Localisation
  • calendriers non grégoriens.
+0

Jetez un oeil à NSDateFormatter: https://developer.apple.com/library/mac/documentation/Cocoa/Reference /Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html –

Répondre

1

Une vieille question, mais pour tous ceux qui trébucher sur cela, consultez NSDateComponentsFormatter.

Par exemple, voici une méthode de catégorie NSDate de mon DejalFoundationCategories projet 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]; 
} 
Questions connexes