NSLocale类使用

之前文章讲过NSData的格式化(NSDate 格式化),今天来说一下实际代码使用中遇到的问题。

最近在工作中,需要将后台返回的时间字符串做格式化操作,期望格式是要展示成

09 Nov 2018 14:56:47  

后台返回的时间字符串格式是 20181119175515


所以程序中代码自然就写成如下格式:

NSString* createTime =@"20181119175515";

NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象

 [dateFormat setDateFormat:@"yyyyMMddHHmmss"];

NSDate*date =[dateFormat dateFromString:createTime];

 [dateFormatsetDateFormat:@"dd MMM yyyy HH:mm:ss"];//设定时间格式,这里可以设置成自己需要的格式

 NSString*currentDateStr = [dateFormat stringFromDate:date];

可是发现输出的是   19 11月 2018 17:55:15


同样的代码,更改手机系统语言为English,时间格式化输出的就是19 Nov 2018 17:55:15

如果更改其他语言,输出结果也会千奇百怪的。

这个时候,NSLocale类就派上了用场。

NSLocale类是将与国家和语言相关的信息进行简单的组合,包括货币、语言、国家等的信息。

将下面这段代码添加到dateFormat初始化之后

//根据需要设置国家代码

NSLocale *usLocale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];

dateFormat.locale=usLocale;

发现无论在什么系统语言下,时间格式化之后都是19 Nov 2018 17:55:15


NSLocale用法:

//当前用户设置的本地化对象

[NSLocale currentLocale]

//获取系统所有本地化标识符数组列表

[NSLocale availableLocaleIdentifiers] ;

//获取所有已知合法的国家代码数组列表

[NSLocale ISOCountryCodes] ;

//获取所有已知合法的ISO货币代码数组列表

[NSLocale ISOCurrencyCodes] ;

//获取所有已知合法的ISO语言代码数组列表

[NSLocale ISOLanguageCodes] ;

//获取当前系统设置语言的标识符

[[NSLocale currentLocale] localeIdentifier];

等价于

[[NSLocale currentLocale] objectForKey:NSLocaleIdentifier];

//常量

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleIdentifier;// 当前系统设置语言的标识符

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleLanguageCode;// 语言代码

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleCountryCode;// 国家代码

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleScriptCode;// 脚本代码

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleVariantCode;// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleExemplarCharacterSet;// NSCharacterSet

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleCalendar;// 当地日历

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleCollationIdentifier;// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleUsesMetricSystem;// NSNumber boolean

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleMeasurementSystem;// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleDecimalSeparator;// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleGroupingSeparator;// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleCurrencySymbol;// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleCurrencyCode;// 货币代码

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleCollatorIdentifierNS_AVAILABLE(10_6,4_0);// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleQuotationBeginDelimiterKey NS_AVAILABLE(10_6,4_0);// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleQuotationEndDelimiterKey NS_AVAILABLE(10_6,4_0);// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleAlternateQuotationBeginDelimiterKey NS_AVAILABLE(10_6,4_0);// NSString

FOUNDATION_EXPORT NSLocaleKeyconst NSLocaleAlternateQuotationEndDelimiterKey NS_AVAILABLE(10_6,4_0);// NSString

//获取当前语言的排版方向和字符方向

[NSLocale lineDirectionForLanguage:[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];

[NSLocale characterDirectionForLanguage:[[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode] ;

//获取用户的语言偏好设置列表,该列表对应于IOS中Setting>General>Language弹出的面板中的语言列表。

[NSLocale preferredLanguages];

//监听用户本地化设置的消息

[[NSNotification CenterdefaultCenter] addObserver:self selector:@selector(localChangedHandler:) name:NSCurrentLocaleDidChangeNotificationobject:nil];

//以本地化方式获取国际化信息的显示名称

NSLocale* curLocal = [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hans"] ;

NSLog(@"%@",[curLocal displayNameForKey:NSLocaleIdentifiervalue:@"fr_FR"] );//法文(法国)

curLocal= [[NSLocale alloc]initWithLocaleIdentifier:@"zh-Hant"] ;

NSLog(@"%@",[curLocal displayNameForKey:NSLocaleIdentifiervalue:@"fr_FR"]);//法文(法國)

你可能感兴趣的:(NSLocale类使用)