iOS|iOS NSLocale

1.NSLocale
若你只开发中国区的应用,需要保证用户修改当前语言环境时应用的显示不发生变化。而像NSDateFormatter这样的类,会根据设备的设置,自动返回不同语言的数据。
【iOS|iOS NSLocale】下面看个例子

//获取系统当前时间 NSDate*currentDate=[NSDate date]; //用于格式化NSDate对象 NSDateFormatter*dateFormatter=[[NSDateFormatter alloc] init]; //设置格式:zzz表示时区 [dateFormatter setDateFormat:@"yyyy-MM-ddHH:mm:sszzz"]; //NSDate转NSString NSString*currentDateString=[dateFormatter stringFromDate:currentDate]; //输出currentDateString NSLog(@"%@",currentDateString);

运行看看输出结果
2017-03-2214:16:57.422TestDemo[6756:1555205]2017-03-22 14:16:57

这样设置看着没问题,其实是有问题的。下面我们改下系统的设置:把语言设置成印度尼西亚,时间设置成12小时制
在看下输出结果
2017-03-2214:16:57.422TestDemo[6756:1555205]2017-03-2214.16.57PM

问题就出现了,你设置成其他语言可能还会有其他情况呢。
为了保证返回数据的语言一致,我们需要设置NSLocale,我们把dateFormatter的locale属性改一下即可解决这个问题。将下面代码放在dateFormatter初始化之后:
NSLocale*usLocale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]; dateFormatter.locale=usLocale;

当然,像上面的需求很罕见。
作为大家都不常用的一个类,NSLocale类是将与国家和语言相关的信息进行简单的组合,包括货币,文学方面的信息。 货币:货币的国际名称(人民币的国际货币名称是CNY);货币符号(人民币的国际货币符号是¥) 文学:标点符号,文字的书写顺序(左右顺序),引用的起止符号等等 若做金融一类的应用可能会用到NSLocale这个类。
这个类稍微了解即可。

    推荐阅读