NSDateFormatter не показывает полное имя месяца, только однозначный номер
Не знаю, в чем проблема, но вместо того, чтобы получить месяц "Июль", я получаю "07".
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[NSLocale systemLocale]];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
Я пробовал M, MM, MMM, MMMM, и все они дают мне число, а не имя месяца, хотя и с разными количествами ведущих 0.
Ответы
Ответ 1
Оказывается, проблема со второй строкой, setLocale
. Я предполагаю, что система не будет использовать по умолчанию английские месячные имена, если параметр locale
был установлен вручную? Я живу на английском языке locale
, но, возможно, это не имеет значения.
В любом случае, не устанавливая локаль, исправляется проблема с именем месяца.
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
Ответ 2
Проблема заключается в локали, а не в формате. Проверьте это:
http://waracle.net/mobile/iphone-nsdateformatter-date-formatting-table/
В принципе, "MMMM" предоставит вам полное имя месяца.
Ответ 3
-systemLocale
не то, что вы хотите здесь. Он возвращает резервную локаль, если другой язык не подходит. Используйте -currentLocale
, чтобы получить текущую локаль пользователя.
также:
Для получения правильного формата даты вы должны использовать метод NSDateFormatter
+dateFormatFromTemplate:options:locale:
. На некоторых языках день наступает до месяца и т.д. И наоборот.