NSDateFormatter, кажется, имеет неправильный месяц - PullRequest
5 голосов
/ 14 февраля 2012

У меня есть этот блок кода для чтения в спецификации даты / времени ISO 8601.Проблема в том, что месяц почему-то не работает.Каждый раз, когда я конвертирую это, месяц - "01".Что я делаю не так?

NSDateFormatter *UTCDateFormat = [[NSDateFormatter alloc] init];
[UTCDateFormat setDateFormat:@"yyyy-MM-DD'T'HH:mm:ss'Z'"];
[UTCDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[UTCDateFormat setCalendar:[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]];
[UTCDateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
NSLog(@"%@", [UTCDateFormat dateFromString:dateString]);

Так, например, если dateString было:

@"2002-03-12T21:13:27Z" 

мой вывод будет:

2002-01-12 21:13:27 +0000

Вещи у меня естьуже пробовал:

  • Изменен ММ на LL
  • Пробовал без setCalendar / setLocale
  • пробовал с 'вокруг' -
  • переключенная позиция ММ вокругв другие места.Это никогда ничего не меняет.
  • Смотрел повсюду, и похоже, что он работает для всех остальных.

1 Ответ

18 голосов
/ 14 февраля 2012

Попробуйте это

    [UTCDateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

DD - это "День года", а не "День месяца".Отличным источником для поиска форматов NSDateFormatter является эта таблица

...