2009-06-18 89 views
3

我使用的NSDate得到一個字符串,如「09年6月18日」,用代碼:可可 - 從NSDate的本地化字符串,NSCalendarDate

NSDate *theDate = [NSDate date]; 
NSString *dateString = [theDate descriptionWithCalendarFormat:@"%d %b %y" 
     timeZone:nil 
     locale: nil]; 

這工作,但結果只能在英語輸出。我需要將輸出本地化爲用戶的默認語言。

可可(Mac OS X 10.4,10.5在這種情況下)爲本地化提供了一個工具,還是我必須手動本地化爲每一天的每個案例和&月份我的自我?

(我提供了一個場所,但儘管這確實提供了日期的區域設置特定的順序,但它似乎並沒有做一天月份名稱的任何本地化)

回答

22

這裏是一個snippet from Apple

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800]; 

NSString *formattedDateString = [dateFormatter stringFromDate:date]; 

NSLog(@"formattedDateString for locale %@: %@", [[dateFormatter locale] localeIdentifier], formattedDateString); 
+0

感謝您的幫助。不幸的是,該代碼段看起來不能正常工作。如果我將'date'更改爲[NSDate date],那麼無論使用的NSDateFormatterXXXStyle如何,我都會得到以下結果: en_AU:06/19/09 在International System Preferences - > Formats中,我將我的區域設置爲澳大利亞人。但!我的日期偏好確實是dd/mm/yy。而代碼以澳大利亞不友好的mm/dd/yy格式輸出。 – SirRatty 2009-06-18 23:30:50

3

看來一行代碼丟失:

[dateFormatter setLocale:usLocale];