NSDateFormatter dateFromString дает неверную дату
Я уже пробовал предложения в других сообщениях, похожих на это, безрезультатно. Вот ситуация:
У меня есть NSString:
Fri November 18, 2011
и я пытаюсь преобразовать его в такую дату:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EE MMMM d, YYYY"];
NSDate *myDate = [df dateFromString: dateString];
Но полученная переменная myDate сохраняет это:
2010-12-31 00:00:00 +0000
Кто-нибудь знает, почему неправильная дата выбрана из dateFromString? Строка - 18 ноября, конвертированная дата - 31 декабря...
Спасибо всем!
Ответы
Ответ 1
Вам нужно использовать yyyy
для года, а не yyyy
.
Из ссылка Apple:
Общей ошибкой является использование YYYY. yyyy указывает календарный год, тогда как YYYY указывает год ( "Неделя года" ), используемый в календарном году ISO год. В большинстве случаев yyyy и YYYY дают одинаковое число, однако они могут быть разными. Обычно вы должны использовать календарный год.
И чтобы быть верным, вам также нужно изменить EE
на EEE
. Хотя они дают тот же результат в моем тесте.
Ответ 2
Я думаю, вам нужно "EEE MMMM d, YYYY", т.е. тройной E в качестве строки формата. Если это не сработает, я рекомендую использовать жестко закодированные строки с более удобными датами и форматами, чтобы разбить проблему. См., Например, NSDateFormatter, не работающий, чтобы получить больше советов по этой теме.