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/
let template = "EEEEdMMM" let format = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current) let formatter = DateFormatter() formatter.dateFormat = format let now = Date() let whatYouWant = formatter.string(from: now) // ex: Sunday, Mar 5
Play with template
to match your needs.
Doc and examples here to help you determine the pattern you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With