问题
I'm going mad with, probably, a stupid problem.
I have 3 strings: year, month and day. I need to have a date in the right format based on currentLocale, so i.e. if currentLocale localeIdentifier is en_US my dateFormat should be: MMM/dd/yyyy
if it's fr_FR the dateFormat should be dd/MMM/yyyy
I don't think the only way to do this is to get currentLocale localeIdentifier and start with a bunch of if then.
Thanks in advance.
Max
回答1:
Look at NSDateComponents to create an NSDate, then use NSDateFormatter to format it. NSDateFormatter uses the current locale to format dates, based on the format style (e.g.NSDateFormatterMediumStyle
).
回答2:
If I understand your question, you want to set your NSDateFormatter
to the locale of the user's device. For that you can just do something like this:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];
回答3:
In Swift 3:
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeStyle = .none
formatter.locale = Locale.current
let date = Date()
let dateString = formatter.string(from: date)
print(dateString)
回答4:
-(NSString *) stringFromDate:(NSDate *) date{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSString *dateString = [dateFormatter stringFromDate:date];
[dateFormatter release];
return dateString;
}
-(NSDate *) dateFromString:(NSString *) dateInString{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *dateFromString = [dateFormatter dateFromString:dateInString];
[dateFormatter release];
return dateFromString;
}
I hope this helps.
回答5:
check out this link to get understand of how NSDateFormatter
based on http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/
回答6:
In case you want to have more flexibility about the format than the formats usable with setDateStyle, have a look at my answer to a similar question: https://stackoverflow.com/a/20219610/1896336
来源:https://stackoverflow.com/questions/5938760/nsdateformatter-setdateformat-according-to-currentlocale