获取用户的日期格式? (DMY,MDY,YMD)

时间:2013-04-18 18:56:16

标签: ios localization nsdate nsdateformatter

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

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

现在我正在设置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

2 个答案:

答案 0 :(得分: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以查看您找到的订单Mdy

答案 1 :(得分: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];