Как я могу отформатировать временные интервалы в Какао? - PullRequest
6 голосов
/ 02 октября 2009

Я ищу класс, который форматирует временные интервалы, например:

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

Есть ли что-нибудь встроенное или библиотека, которая поддерживает такое форматирование временного интервала?

Я думал о том, чтобы сделать это сам, но есть все виды проблем:

  • Локализация
  • Негригорианские календари.

1 Ответ

1 голос
/ 23 января 2015

Старый вопрос, но для любого, кто сталкивается с этим, проверьте NSDateComponentsFormatter.

Например, вот метод NSDate категории из моего DejalFoundationCategories проекта с открытым исходным кодом:

+ (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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...