2013-04-18 174 views
0

我正在創建一個表單,用戶可以使用3個UITextFields輸入自己的生日:1個月,1天和1年。我想根據用戶的日期格式來安排它們。
即:[月] [日] [年份]針對美國用戶,[日] [月] [年份]歐洲用戶等
地圖的日期格式由國家:http://en.wikipedia.org/wiki/Date_format_by_country#Map獲取用戶的日期格式? (DMY,MDY,YMD)

什麼是最簡單的如何獲得該格式?

現在我正在設置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]); 

但我不認爲這是正確的事情,因爲我已經有太多不同的格式:

美國:○○年十月二十〇日
FR:20/10/00
日本:2000/10/20
瑞典:2000-10-20

+0

爲什麼不爲用戶提供UIDatePicker?這會更容易。 – Anupdas

+0

這是產品要求。 – LG01

回答

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

+0

BUt我怎樣才能找到mm,dd,yy的順序? – user1673099

+0

@ user1673099如果您有任何問題無法找到答案,請發佈您自己的問題,以便給予適當的關注。 – rmaddy

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

這不給我的領域的順序。 – LG01

+0

@ LG01 AFAIK shortStyle是日期需要根據地區顯示的方式。你能解釋一下爲什麼你不認爲這很好嗎? – Anupdas

+0

我想知道我應該根據用戶的語言環境定位3個UITextFields(1天,1個月和1年)的順序。 – LG01