8

我正在尝试显示本地化日期(以字母表示的星期几和月份)取决于手机的语言(而不是区域格式)。

我试过了 :

// Date formatter
NSDateFormatter* df = [[NSDateFormatter alloc] init];
NSLocale* locale = [NSLocale currentLocale];
NSLog(@"locale : %@", locale.localeIdentifier);
[df setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"EEEE dd MMMM" options:0 locale:[NSLocale currentLocale]]]; 

但是当我改变手机的语言时,它什么也没改变,它仍然以法语显示。我怎样才能使它工作?

4

3 回答 3

9

试试这个;

首先我们获取设备语言,然后NSDateFormatter 使用该语言设置语言环境。

NSString * deviceLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
NSDateFormatter * dateFormatter = [NSDateFormatter new];
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:deviceLanguage];

[dateFormatter setDateFormat:@"EEEE dd MMMM"];
[dateFormatter setLocale:locale];

NSString * dateString = [dateFormatter stringFromDate:[NSDate date]];

NSLog(@"%@", dateString);
于 2013-09-13T10:42:13.930 回答
1

你测试错了。您应该做的是更改设备的Region Format,而不是Language设备的。

Settings->General->International->Region Format更改它并再次测试它。

我希望它有所帮助。

编辑:使用Language不是一个好主意。iOS 没有翻译成那么多语言。但是它支持很多区域格式。

示例:我住在保加利亚。iOS 没有翻译成保加利亚语,所以实际的菜单和应用程序使用英语,但由于我设置Region Format为保加利亚语,所以所有日期格式、日期标签和货币标签都是保加利亚语。

于 2013-09-13T10:51:42.270 回答
0

使用 Desdenova 的答案来获得工作代码。

要对其进行测试(例如截屏),您需要更改设备的语言和区域格式。

如果您只更改设备的语言,它可能会稍微更改日期,但月份和日期(名称)仍将采用区域格式的语言。

于 2014-03-07T01:32:52.470 回答