I am using NSDateFormatter to set my date in my iPhone app, and dates are showing up properly. However, I am finding all the locales (my app supports up to 12 different lan
Found the solution. The key is to not call setDateFormat
at all, and the API in iPhone would automatically pick the appropriate thing to display based on what is specified in setDateStyle
and setTimeStyle
.
I would try the following NSDateFormatter
API instead:
+ (NSString *)localizedStringFromDate:(NSDate *)date
dateStyle:(NSDateFormatterStyle)dateStyle
timeStyle:(NSDateFormatterStyle)timeStyle;
Like so:
self.creationDate.text = [NSDateFormatter localizedStringFromDate:creationTimeStamp
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterShortStyle];
That should give you the output you're looking for, tidy up the code a little, and keep you from having to manage some spurious memory.
Self-contained solution with @fbrereto's design:
static NSString *FormatDate(NSDate *date)
{
return [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterMediumStyle
timeStyle:NSDateFormatterNoStyle];
}
Now you can simply run:
NSString *formattedDate = FormatDate([NSDate new]);