我正在创建一个表单,用户可以使用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
答案 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
以查看您找到的订单M
,d
和y
。
答案 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];