根据currentLocale的NSDateformatter setDateFormat

我很生气,可能是一个愚蠢的问题。

我有3个字符串:年,月和日。 我需要基于currentLocale以正确的格式设置日期,所以如果currentLocale localeIdentifier是en_US,我的dateFormat应该是:MMM / dd / yyyy

如果它是fr_FR,则dateFormat应为dd / MMM / yyyy

我不认为这样做的唯一方法是获取currentLocale localeIdentifier,然后以一堆if开头。

提前致谢。

马克斯

查看NSDateComponents以创建NSDate,然后使用NSDateFormatter对其进行格式化。 NSDateFormatter根据格式样式使用当前区域设置来格式化日期(例如,
NSDateFormatterMediumStyle )。

如果我理解您的问题,您希望将NSDateFormatter设置为用户设备的区域设置。 为此你可以做这样的事情:

 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]; 

在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) 
 -(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; } 

我希望这有帮助。

查看此链接以了解NSDateFormatter如何基于http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/

如果您希望格式比setDateStyle可用的格式更灵活,请查看我对类似问题的回答: https ://stackoverflow.com/a/20219610/1896336