I'm working with Objective C for iPhone and have a NSDate that I want to display in full style but without the year. Right now I'm using the code below but it also show the year, and I don't want that. As I want to show the date in the right region format I cannot just delete the year in the end as in some countries the year will not be in the end but in the middle or beginning.
NSDate *testdate = [NSDate date];
NSDateFormatter *dateFormattertest = [[NSDateFormatter alloc] init];
[dateFormattertest setDateStyle:NSDateFormatterFullStyle];
[dateFormattertest setTimeStyle:NSDateFormatterNoStyle];
NSString *formattedDateString = [dateFormattertest stringFromDate:testdate];
NSLog(formattedDateString);
In US this give me:
Thursday, January 14, 2010
In Sweden this give me:
torsdag, 2010 januari 14
What is the solution for this? And another question, where can I find information on how to use the setDateFormat of NSDateFormatter? I can't find information about what different letters stand for in the API.
I know this is a pretty old question but this is the only one I found on SO that talked about the same issue I was having.
The key method to use here is: dateFormatFromTemplate
Instead of setting the style, you want to set the format as such:
NSDate *testdate = [NSDate date];
NSLocale *currentLocale = [NSLocale currentLocale];
// Set the date components you want
NSString *dateComponents = @"EEEEMMMMd";
// The components will be reordered according to the locale
NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:dateComponents options:0 locale:currentLocale];
NSLog(@"Date format for %@: %@", [currentLocale displayNameForKey:NSLocaleIdentifier value:[currentLocale localeIdentifier]], dateFormat);
NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:dateFormat];
NSString *formattedDateString = [dateFormatter stringFromDate:testdate];
NSLog(formattedDateString);
Special thanks to: http://oleb.net/blog/2011/11/working-with-date-and-time-in-cocoa-part-2/