ios应用在不同语言及区域的日期显示
来源:互联网 发布:2016网络红歌 编辑:程序博客网 时间:2024/06/05 07:28
在不同的语言环境下,应用展现出来的日期格式都是不一样的。例如英文的语言环境下,展现的日期January 27, 2014。而中文的语言环境下,展现的日期2014年1月27日。
这是多语言环境下,任何应用必须面对的问题。
使用NSDateFormatter 可以处理好这个问题。这是apple人员在多种语言环境下打造出来的api,放心用。不必再去发明一个轮子。
对于数字的显示,NSNumberFormatter可以处理好这个问题。这里只介绍日期的显示格式。
我们要显示年月日,可以使用固有的类型NSDateFormatterFullStyle,可以显示符合各种语言环境下符合其语言特征的日期。
例如
法文在法国的显示方式27 janvier 2014
英文在美国的显示方式January 27, 2014
英文在英国的显示方式27 January 2014
当然,在中国就是这样:2014年1月27日
如果要加上一个星期几呢。也是一样的。
这是常见的显示格式使用默认的style都能处理好。但是,如果只显示年月呢。
我们该如何处理?
根据不同语言的显示不同设置自定义的dataformat,中文设置为yMMMM,英文设置为MMMMy。这样下来,且不是所有的语言都是设置一遍。这种方法又陷入之前的显示年月日的老路了。
可以根据NSDateFormatter的方法生成根据不同的语言区域生成一个日期格式来,这样不同的语言就实现了符合各自特征的日期格式。
NSString *dateComponents = @"yMMMMd";
NSString *dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponents options:0 locale:usLocale];
NSDateFormatter *dateFormatter = [[NSDateFormatteralloc]init];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
NSDate *date=[NSDatedate];
NSLog(@"Date for default locale %@: %@",
[[dateFormatterlocale]localeIdentifier], [dateFormatterstringFromDate:date]);
NSLocale *zhLocale = [[NSLocalealloc]initWithLocaleIdentifier:@"zh_CN"];
[dateFormattersetLocale:zhLocale];
NSLog(@"Date for locale %@: %@",
[[dateFormatterlocale]localeIdentifier], [dateFormatterstringFromDate:date]);
NSLocale *usLocale = [[NSLocalealloc]initWithLocaleIdentifier:@"en_US"];
[dateFormattersetLocale:usLocale];
//
NSLog(@"Date for locale %@: %@",
[[dateFormatterlocale]localeIdentifier], [dateFormatterstringFromDate:date]);
NSLocale *gbLocale = [[NSLocalealloc]initWithLocaleIdentifier:@"en_GB"];
[dateFormattersetLocale:gbLocale];
//
NSLog(@"Date for locale %@: %@",
[[dateFormatterlocale]localeIdentifier], [dateFormatterstringFromDate:date]);
NSLocale *frLocale = [[NSLocalealloc]initWithLocaleIdentifier:@"fr_FR"];
[dateFormattersetLocale:frLocale];
NSLog(@"Date for locale %@: %@",
[[dateFormatterlocale]localeIdentifier], [dateFormatterstringFromDate:date]);
2014-01-27 16:09:15.941 TestDragCV[3223:70b] Date for default locale en_US: Monday, January 27, 2014
2014-01-27 16:09:15.942 TestDragCV[3223:70b] Date for locale zh_CN: 2014年1月27日星期一
2014-01-27 16:09:15.943 TestDragCV[3223:70b] Date for locale en_US: Monday, January 27, 2014
2014-01-27 16:09:15.944 TestDragCV[3223:70b] Date for locale en_GB: Monday, 27 January 2014
2014-01-27 16:09:15.946 TestDragCV[3223:70b] Date for locale fr_FR: lundi 27 janvier 2014
NSString *dateFormat;
NSString *dateComponents =@"yMMMMd";
NSDateFormatter *monthAndYearFormatter=[[NSDateFormatteralloc]init];
dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponentsoptions:0 locale:usLocale];
NSLog(@"Date format for %@: %@",
[usLocale displayNameForKey:NSLocaleIdentifiervalue:[usLocalelocaleIdentifier]], dateFormat);
monthAndYearFormatter.dateFormat=dateFormat;
NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",
[[monthAndYearFormatterlocale]localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);
dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponentsoptions:0 locale:gbLocale];
NSLog(@"Date format for %@: %@",
[gbLocale displayNameForKey:NSLocaleIdentifiervalue:[gbLocalelocaleIdentifier]], dateFormat);
monthAndYearFormatter.dateFormat=dateFormat;
NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",
[[monthAndYearFormatterlocale]localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);
dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponentsoptions:0 locale:frLocale];
NSLog(@"Date format for %@: %@",
[frLocale displayNameForKey:NSLocaleIdentifiervalue:[frLocalelocaleIdentifier]], dateFormat);
monthAndYearFormatter.dateFormat=dateFormat;
NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",
[[monthAndYearFormatterlocale]localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);
dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponentsoptions:0 locale:zhLocale];
NSLog(@"Date format for %@: %@",
[zhLocale displayNameForKey:NSLocaleIdentifiervalue:[zhLocalelocaleIdentifier]], dateFormat);
monthAndYearFormatter.dateFormat=dateFormat;
NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",
[[monthAndYearFormatterlocale]localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);
NSLocale *tempLocale=[NSLocalecurrentLocale];
dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponentsoptions:0locale:[NSLocalecurrentLocale]];
NSLog(@"Date format for %@: %@",
[gbLocale displayNameForKey:NSLocaleIdentifiervalue:[tempLocalelocaleIdentifier]], dateFormat);
monthAndYearFormatter.dateFormat=dateFormat;
NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",
[[monthAndYearFormatterlocale]localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);
2014-01-27 16:10:48.542 TestDragCV[3241:70b] Date format for English (United States): MMMM d, y
2014-01-27 16:10:48.544 TestDragCV[3241:70b] localeDateFormatOfYearMonth for default locale en_US: January 27, 2014
2014-01-27 16:10:48.547 TestDragCV[3241:70b] Date format for English (United Kingdom): d MMMM y
2014-01-27 16:10:48.548 TestDragCV[3241:70b] localeDateFormatOfYearMonth for default locale en_US: 27 January 2014
2014-01-27 16:10:48.551 TestDragCV[3241:70b] Date format for français (France): d MMMM y
2014-01-27 16:10:48.551 TestDragCV[3241:70b] localeDateFormatOfYearMonth for default locale en_US: 27 January 2014
2014-01-27 16:10:48.554 TestDragCV[3241:70b] Date format for中文(中国): y年M月d日
2014-01-27 16:10:48.554 TestDragCV[3241:70b] localeDateFormatOfYearMonth for default locale en_US: 2014年1月27日
2014-01-27 16:10:48.556 TestDragCV[3241:70b] Date format for English (United States): MMMM d, y
2014-01-27 16:10:48.557 TestDragCV[3241:70b] localeDateFormatOfYearMonth for default locale en_US: January 27, 2014
- ios应用在不同语言及区域的日期显示
- ios应用在不同语言及区域的日期显示
- 如何完成在一个图片中,点击不同区域显示不同的结果
- 在DataGrid里面根据日期的不同显示new图标
- MFC 关于在对话框上的同一区域显示不同的内容(子对话框)
- 不同触发链接在同一区域显示功能
- 8.5 日期的格式化(不同区域的星期格式)
- iOS 在UILabel显示不同的字体和颜色
- iOS 在UILabel显示不同的字体和颜色
- iOS 在UILabel显示不同的字体和颜色(转)
- iOS 在UILabel显示不同的字体和颜色
- iOS 在UILabel显示不同的字体和颜色
- iOS 在UILabel显示不同的字体和颜色
- iOS 在UILabel显示不同的字体和颜色(转)
- iOS 在UILabel显示不同的字体和颜色 NSMutableAttributedString
- iOS 在UILabel显示不同的字体和颜色(转)
- iOS 在UILabel显示不同的字体和颜色
- iOS 在UILabel显示不同的字体和颜色
- 批处理文件
- 用setsockopt()来控制recv()与send()的超时
- 95%的bug是由程序员造成的
- 如何把日文學好? 如何準備日本語能力檢定?
- 16 款加速编码的 HTML5 在线工具
- ios应用在不同语言及区域的日期显示
- Eclipse好用的所见所得HTML编辑器
- The Busy Parents Guide To A Digital World
- 从服务上下载下的日志文件,用UltraEdit打开时中文是乱码解决方法
- Hadoop单节点故障改进方案对比
- flash的读写擦除
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
- 如何在MyEclipse中建立sql文件,并执行语句?
- C#之简单工厂模式与多态性