NSDateFormatter неправильно анализирует дату

Я извлекаю строки из текста, которые представляют даты. Они выглядят так:

Monday August 16, 2010 05:28 AM EST

Я пытаюсь разобрать их с помощью NSDateFormatter. Я установил его формат:

[dateFormatter setDateFormat:@"EEEE MMMM d, YYYY h:mm a z"];

Однако это не работает. В примере, который я привел выше, если я преобразую строку в дату, а затем эту дату в строку, средство форматирования даты вернет это:

Monday December 28, 2009 5:28 AM EST

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: кажется, что это работает при использовании формата [dateFormatter setDateFormat:@"EEEE MMMM d, y h:mm a z"];. Странный...


person Will Parker    schedule 16.08.2010    source источник


Ответы (2)


Буду,

NSDateFormatter использует стандарт Unicode для форматирования дат. Как вы поняли, "y" работает, а "YYYY" - нет. Если вы видите спецификацию (ссылку на несколько слоев глубоко в документации Apple, поэтому ее нелегко найти), вы увидите, что «Y» имеет это примечание: «Год (из« недели года »), используется в ISO год-неделя календарный. Может отличаться от календарного года".

Вот ссылка на спецификацию.

Я знаю, что вы исправили это сами, но это может помочь объяснить, почему «Y» не работает для вас.

person Tim    schedule 18.08.2010

"y" или "yyyy" в порядке. "ГГГГ" не работает. Проверьте следующую ссылку для деталей.

situee.blogspot.com: NSDateFormatter setDateFormat YYYY возвращает неверный год

person situee    schedule 21.02.2011