2015-11-06 3 views
1

Я пытаюсь показать месяц и день определенной даты, например, так:Формат парциальное дата на основе локали

«5 ноября»

но позволяют ему изменить порядок основанный на локали.

"5 ноября" (или любые другие люди)

Я знаю, что я могу просто жесткий код форматы, как так:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MMMM d"]; 

Но это не обновление для локали, и я не хочу, чтобы жестко кодировать список локалей, которые используют один стиль или другой.

Обычно, когда я хочу отображать дату для данного локального, я знаю, что могу использовать setDateType для форматирования и выбирать из нескольких ранее существовавших форматов, которые будут хорошо учитывать текущий язык. К сожалению, ни один из существующих NSDateFormatterStyle не покажет, как они мне нужны.

Единственное решение, о котором я мог подумать, - установить стиль даты в стиле long, а затем прочитать строку dateFormat и посмотреть, ударил ли я сначала «d» или «M». Затем отформатируйте его соответствующим образом. Это было бы довольно легко сделать, но это кажется действительно взломанным. Конечно, есть лучший способ сделать это.

Любые предложения?

ответ

1

По-видимому, NSDateFormatter dateFormatFromTemplate - вещь, и она решает мою проблему.

NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMMM d" options:0 locale:[NSLocale currentLocale]]; 

Это будет корректно отформатировать дату после шаблона в соответствии с текущим языковым стандартом.

Смежные вопросы