0

我正在创建一个表单,用户可以在其中使用 3 个 UITextFields 输入他们的生日:1 个月份,1 个日期和 1 个年份。我想根据用户的日期格式来安排它们。
即: [ MONTH ] [ DAY ] [ YEAR ] 适用于美国用户,[ DAY ] [ MONTH ] [ YEAR ] 适用于欧洲用户等。
按国家/地区划分的日期格式地图:http ://en.wikipedia.org/wiki/ Date_format_by_country#地图

获得该格式的最简单方法是什么?

现在我正在设置 2000 年 10 月 20 日的日期并解析字符串。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:20];
[components setMonth:10];
[components setYear:2000];
NSDate *date = [calendar dateFromComponents:components];

NSLog(@"%@", [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle]);

但我认为这不是正确的做法,因为我已经有了太多不同的格式:

美国:10/20/00
FR:20/10/00
日本:2000/10/20
瑞典:2000-10-20

4

2 回答 2

1

你可以利用NSDateFormatter dateFormatFromTemplate:options:locale:.

NSString *base = @"MM/dd/yyyy";
NSLocale *locale = [NSLocale currentLocale];
NSString *format = [NSDateFormatter dateFormatFromTemplate:base options:0 locale:locale];

的值format将根据区域设置以正确的格式进行调整。现在的诀窍是扫描format以查看找到M的顺序,dy

于 2013-04-18T23:59:23.447 回答
0

您可以尝试设置 dateFormatter 的 dateStyle。

NSDateFormatter  *dateFormatter = [[NSDateFormatter alloc]init];
//Based on users locale it would automatically change the display format
[dateFormatter setDateStyle:NSDateFormatterShortStyle];

NSString *dateString = [dateFormatter stringFromDate:date];
于 2013-04-18T19:07:52.520 回答