NSDateFormatter returning wrong year

objective-c

Solution

The thing is that `YYYY` and `yyyy` are two quite different things. You are using `YYYY`, which, as the docs tell you, is not necessarily the same as the calendar year.

Problem

I am using a pretty basic method to turn dates into strings. ``` +(NSString*)stringForDate:(NSDate*)date { NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"ddMMYYYY"]; NSLog(@"%@",date); NSLog(@"%@",[dateFormat stringFromDate:date]); return [dateFormat stringFromDate:date]; } ``` But some of them are coming back with the wrong years. Here's a sample of the log. ``` 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 ``` Ignore the fact that the days appear to be a day later - that's expected, due to time zone. However, all the dates being fed in are 2013, but some of the strings are coming back with 2014. Any help appreciated - it's doing my head in!

Original source

Related problems