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这个类。
这个类稍微了解即可。