2009-10-02 9 views
5

Busco una clase que da formato a intervalos de tiempo como este:¿Cómo puedo formatear los intervalos de tiempo en Cocoa?

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

¿hay algo incorporado o una biblioteca que soporta este tipo de tiempo de formato intervalo?

pensé en hacerlo yo mismo, pero hay todo tipo de problemas:

  • localización
  • calendarios no gregorianos.
+0

Tome un vistazo a NSDateFormatter: https://developer.apple.com/library/mac/documentation/Cocoa/Reference /Fundación/Clases/NSDateFormatter_Class/Reference/Reference.html –

Respuesta

1

Una vieja pregunta, pero para cualquier persona que tropieza con esto, echa un vistazo a NSDateComponentsFormatter.

Por ejemplo, aquí hay un método NSDate categoría de mi DejalFoundationCategories proyecto de código abierto:

+ (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]; 
} 
Cuestiones relacionadas