2014-05-24 6 views
5

Я использую довольно простой метод для перевода дат в строки.NSDateFormatter, возвращающий неправильный год

+(NSString*)stringForDate:(NSDate*)date { 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"ddMMYYYY"]; 
    NSLog(@"%@",date); 
    NSLog(@"%@",[dateFormat stringFromDate:date]); 
    return [dateFormat stringFromDate:date]; 
} 

Но некоторые из них возвращаются с неправильными годами. Вот пример журнала.

2014-05-25 00:26:46.050 App Name[1868:60b] 2013-12-26 16:00:00 +0000 
2014-05-25 00:26:46.051 App Name[1868:60b] 27122013 
2014-05-25 00:26:46.051 App Name[1868:60b] 2013-12-27 16:00:00 +0000 
2014-05-25 00:26:46.051 App Name[1868:60b] 28122013 
2014-05-25 00:26:46.051 App Name[1868:60b] 2013-12-28 16:00:00 +0000 
2014-05-25 00:26:46.052 App Name[1868:60b] 29122014 
2014-05-25 00:26:46.052 App Name[1868:60b] 2013-12-29 16:00:00 +0000 
2014-05-25 00:26:46.054 App Name[1868:60b] 30122014 

Игнорируйте тот факт, что дни кажутся днем ​​позже - это ожидается из-за часового пояса. Тем не менее, все даты, которые были поданы в 2013 году, но некоторые из строк возвращаются с 2014 года.

Любая помощь оценивается - она ​​делает мою голову!

+2

Глупые ошибки, но их легко сделать! Что еще более важно, вы создали свой тестовый код и ваш вопрос очень хорошо, что облегчает диагностику. Отлично сработано. – matt

ответ

8

Дело в том, что YYYY и yyyy - это две совершенно разные вещи. Вы используете YYYY, который, как сообщает docs, не обязательно совпадает с календарным годом.

+0

Ты мой герой. –

+4

@JamesWhite Вы [не первый человек] (http://arstechnica.com/apple/2013/01/ask-ars-why-will-apples-do-not-disturb-bug-fix-itself-next -week /), чтобы иметь проблемы с этим :) –

+0

@JesseRusak Это было весело! Не знал об этом. – matt

Смежные вопросы