Разделитель модулей NSDateComponentsFormatter

Я хочу преобразовать время в минутах в удобную для пользователя строку. Следующий код решает проблему, за исключением одного: я хочу, чтобы результат выглядел как 1 hr 30 min, однако я получил 1 hr, 30 min. Как указать разделитель единиц для NSDateComponentsFormatter? Конечно, я могу удалить все запятые вручную, но это не лучший способ для меня.

    NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
    formatter.allowedUnits = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute;
    formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleShort;

    NSLog(@"%@", [formatter stringFromTimeInterval:90*60]);

person Dmitriy    schedule 25.06.2015    source источник


Ответы (2)


Если ваше приложение предназначено для OS X 10.12 (или более поздней версии, я полагаю) или iOS 10.10 (или более поздней версии), Apple добавила новый стиль единиц измерения под названием «NSDateComponentsFormatterUnitsStyleBrief».

formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleBrief

и он распечатает "1 час 30 минут"

https://developer.apple.com/reference/foundation/nsdatecomponentsformatterunitsstyle/nsdatecomponentsformatterunitsstylebrief?language=objc

person Dan    schedule 30.01.2017

Замените эту строку кода formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleShort;

с

formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated;

Это работа в соответствии с вашими требованиями. Я проверяю свой проект xcode.

person Om Prakash    schedule 25.06.2015
comment
Эй, спасибо за ответ, но мне нужно 1 час 30 минут, однако ваш код дает 1 час 30 минут. Мне все еще нужно краткое описание. - person Dmitriy; 25.06.2015
comment
Хорошо, я понимаю ваше требование. - person Om Prakash; 25.06.2015
comment
Приятель, вы можете использовать stringByReplacingOccurrencesOfString. если вы хотите, чтобы результат отображался только на viewController. - person Om Prakash; 25.06.2015