2011-01-13 101 views
3

我在使用NSDateFormatter時遇到了問題,當用戶沒有使用公曆日曆作爲iPhone的默認日曆時。NSDateFormatter和日曆日曆

NSString *testString = @"2011-01-14"; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"]; 
NSDate *eventDate = [dateFormat dateFromString:testString]; 
[dateFormat setDateFormat:@"yyyy-MM-dd(EEE)"]; 
NSString *dateAndLocString = [dateFormat stringFromDate:eventDate]; 
[dateFormat release]; 

在使用公曆dateAndLocString將等於2011-01-13(星期四)的裝置 但是,當用戶正在使用日本日曆dateAndLocString將等於2011-01-13(星期三) ,這是錯誤的。

任何人都知道我可能做錯了什麼?

回答

4

我找到了一種方法讓這個工作正常,如果有人有更好的建議請讓我知道。我們必須使用以下代碼行將首選用戶設置在NSDateFormatter本地。

[dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]] autorelease]]; 

這將爲NSDateFormatter提供正確的用戶區域設置。有些人可能會嘗試使用

[dateFormat setLocale:[NSLocale currentLocale]]; 

但這不會爲[NSLocale currentLocale]的系統上與日本日曆回報EN_US @歷=即使用戶語言設置爲日語工作。

我不知道爲什麼NSDateFormatter不能在非公曆日曆上自動工作。