更改NSDateFormatter的数字符号

时间:2012-10-19 22:27:26

标签: objective-c ios nsdateformatter nslocale

所以我的场景基本上就是这样:如果用户有阿拉伯语区域设置,则日期格式化为此字符串:19/10/2013 3:21م

数字为阿拉伯语,日期按照阿拉伯语区域/地区格式以特定方式排序/格式化。问题是某些用户可能有阿拉伯语区域设置,但语言设置为英语(因为他/她可能无法阅读阿拉伯语)。

有没有办法将数字改为阿拉伯语,同时保留了Locale中格式化程序中的所有其他内容?也就是说,根据区域设置/区域格式(保留顺序)格式化日期,但使用英文数字而不是阿拉伯数字。我认为Apple没有任何方式让我们做出这样的改变。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您必须使用具有英文数字符号的区域设置标识符之一。 E.g:

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"EEEE dd MMM | hh:mm a";
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"ar_TN"];
NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);

这将打印:

الخميس 14 جانفي | 02:02 م

答案 1 :(得分:-1)

以下帖子可能会回答您的问题: String replacement in Objective-C

NSString *str = @"This is a string";

str = [str stringByReplacingOccurrencesOfString:@"string"
                                 withString:@"duck"];

对于每个格式化的日期字符串,您将调用此10次(0,1,2,...,8,9)。也许这会对你有帮助。