NSDateFromatter не дает правильное значение MMMM - PullRequest
2 голосов
/ 04 декабря 2010

это сводит меня с ума, кто-то, пожалуйста, покажите мне, где я облажался.

Я также создал новый проект для проверки этого. Среда - xcode 3.2.5, запущенная в симуляторе, и на устройстве имеет тот же результат.

Когда я создаю форматер даты и устанавливаю его формат, затем передаю строку, что-то не работает с форматером даты.

int tmpMonth = 11;
int tmpYear = 2010;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    
[dateFormatter setDateFormat:@"m/d/yyyy"];
NSString *dateAsString = [[NSString alloc] initWithFormat:@"%d/23/%d",tmpMonth,tmpYear];
NSDate *theDate = [[NSDate alloc] initWithTimeInterval:0 sinceDate:[dateFormatter dateFromString:dateAsString]];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
[dateFormatter setDateFormat:@"m/d/yyyy"];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
[dateFormatter release];
[theDate release];
[dateAsString release];

это приводит к выводу:

[Session started at 2010-12-03 17:47:04 -0600.]
2010-12-03 17:47:05.274 wtfDateFormatter[18970:207] January 23, 2010
2010-12-03 17:47:05.277 wtfDateFormatter[18970:207] 11/23/2010

Я не уверен, почему печатается январь, когда я задаю ему формат MMMM, так как он отлично работает в других частях моего приложения, он просто использует другой источник NSDate.

Ответы [ 2 ]

3 голосов
/ 04 декабря 2010

Вы используете 'm' для номера месяца, как для интерпретации, так и для генерации строк. К сожалению, «м» на минуты. Вместо этого используйте «М».

1 голос
/ 04 декабря 2010

Какой вывод, если вы установите tmpMonth на 12?Интересно, останется ли он в январе или перейдет на февраль?

...