Подтвердить что ты не робот

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 декабря...

Спасибо всем!

4b9b3361

Ответ 1

Вам нужно использовать yyyy для года, а не yyyy.

Из ссылка Apple:

Общей ошибкой является использование YYYY. yyyy указывает календарный год, тогда как YYYY указывает год ( "Неделя года" ), используемый в календарном году ISO год. В большинстве случаев yyyy и YYYY дают одинаковое число, однако они могут быть разными. Обычно вы должны использовать календарный год.

И чтобы быть верным, вам также нужно изменить EE на EEE. Хотя они дают тот же результат в моем тесте.

Ответ 2

Я думаю, вам нужно "EEE MMMM d, YYYY", т.е. тройной E в качестве строки формата. Если это не сработает, я рекомендую использовать жестко закодированные строки с более удобными датами и форматами, чтобы разбить проблему. См., Например, NSDateFormatter, не работающий, чтобы получить больше советов по этой теме.