iOS NSLocale

1.NSLocale

若你只开发中国区的应用,需要保证用户修改当前语言环境时应用的显示不发生变化。而像NSDateFormatter这样的类,会根据设备的设置,自动返回不同语言的数据。

下面看个例子

//获取系统当前时间
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这个类。

这个类稍微了解即可。

你可能感兴趣的:(iOS NSLocale)