NSDateFormatter не может использовать спецификаторы формата 'B' или 'b'.'B' немного похоже на 'a' (am / pm), но выводит такие вещи, как "ночью" или "утром".
Например, этот код:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale* locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"];
NSString *dateTemplate = [NSDateFormatter dateFormatFromTemplate:@"h:mmB"
options:0
locale:locale];
[dateFormatter setDateFormat:dateTemplate];
[dateFormatter setLocale:locale];
NSString* now = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"String:\t%@\ndateTemplate:\t%@",
now,
dateFormatter.dateFormat);
... печатает это:
String: 10:23 PM // Should be "10:23 at night"
dateTemplate: h:mm a // Note that 'B' turned into 'a' (am/pm)
Пропуск dateFormatFromTemplate и помещение формата непосредственно в форматтер имеет тот же эффект.
Документы говорят, что iOS7 и позже используйте tr35-31.Неясно, поддерживает ли эта спецификация 'B'.Таблица форматирования для версия 31 упоминает «a», но не упоминает «B».С другой стороны, в спецификации для всех tr35 действительно упоминается буква B.
Если вы скачаете фактические данные CLDR для версии 31, вы можете найтизаписи dayPeriod для "вечером" и т. д.
Данные существуют;есть ли другая строка форматирования, которую я могу использовать, чтобы получить более длинные строки «дневной период»?