如何以编程方式构建本地化日历月名称的NSArray?

时间:2011-02-25 05:46:26

标签: iphone ios date nsdate nscalendar

我正在本地化/国际化我的iPhone应用程序,并有一个问题。在我的应用程序中的一个位置,我显示了一年中12个月的列表。由于它处于目前非本地化的状态,我只需将1月至12月的月份硬编码为NSArray。我想使用NSCalendar以编程方式根据用户的语言环境构建几个月的NSArray。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:12)

您可以从NSDateFormatter获取月份的本地化名称:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
for ( int i = 0; i < 12; ++i ) {
    NSString *monthName = [[df monthSymbols] objectAtIndex:i];
    [...]
}
[df release];

答案 1 :(得分:2)

无需进行迭代,只需直接获取月份:

NSDateFormatter dateFormatter = [[NSDateFormatter alloc] init];
NSLog(@"Months = %@", dateFormatter.monthSymbols);

<强>夫特:

let dateFormatter = NSDateFormatter()
print("Months = \(dateFormatter.monthSymbols)")

答案 2 :(得分:1)

Swift版本....在游乐场尝试

提供区域设置或使用currentlocale

var str = "Hello, playground"

var formatter = NSDateFormatter()

formatter.locale = NSLocale(localeIdentifier: "sv_SE") 
//formatter.locale = NSLocale.currentLocale() // use this to find it automatically

print(formatter.monthSymbols)

结果

"["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"]\n"