根据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