Please see below codes and output.
NSDateComponents *dateComponents = [[[NSDateComponents alloc] init] autorelease];
[dateComponents setYear:2011];
[dateComponents setMonth:1];
[dateComponents setDay:1];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"YYYYMMMd" options:0 locale:[NSLocale currentLocale]]];
NSString *dateString = [dateFormatter stringFromDate:date];
NSLog(@"Happy New Year: %@", dateString);
What do you expect for output?
Happy New Year: Jan 1, 2011
But the result is...
Happy New Year: Jan 1, 2010
What's wrong? Please help...
The template format string should be
@"yyyyMMMd"
(lowercase "y" for year).Uppercase "Y" is something else (see Unicode Date Format Patterns).