ios应用在不同语言及区域的日期显示

62、iOS应用程序本地化指南 本文详细介绍了如何对iOS应用进行本地化,包括nib文件、字符串文件、图像以及应用显示名称的本地化步骤。通过创建一个名为LocalizeMe的小应用,演示了如何获取用户的区域设置、本地化界面元素以及适配不同语言和地区的内容,帮助开发者打造面向全球用户的应用。 阅读详情

在不同的语言环境下,应用展现出来的日期格式都是不一样的。例如英文的语言环境下,展现的日期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 = [NSDateFormatter dateFormatFromTemplate: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:dateComponents options:0 locale:usLocale];

NSLog(@"Date format for %@: %@",

[usLocale displayNameForKey:NSLocaleIdentifiervalue:[usLocale localeIdentifier]], dateFormat);

monthAndYearFormatter.dateFormat=dateFormat;

NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",

[[monthAndYearFormatterlocale] localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);

dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponents options:0 locale:gbLocale];

NSLog(@"Date format for %@: %@",

[gbLocale displayNameForKey:NSLocaleIdentifiervalue:[gbLocale localeIdentifier]], dateFormat);

monthAndYearFormatter.dateFormat=dateFormat;

NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",

[[monthAndYearFormatterlocale] localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);

dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponents options:0 locale:frLocale];

NSLog(@"Date format for %@: %@",

[frLocale displayNameForKey:NSLocaleIdentifiervalue:[frLocale localeIdentifier]], dateFormat);

monthAndYearFormatter.dateFormat=dateFormat;

NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",

[[monthAndYearFormatterlocale] localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);

dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponents options:0 locale:zhLocale];

NSLog(@"Date format for %@: %@",

[zhLocale displayNameForKey:NSLocaleIdentifiervalue:[zhLocale localeIdentifier]], dateFormat);

monthAndYearFormatter.dateFormat=dateFormat;

NSLog(@"localeDateFormatOfYearMonth for default locale %@: %@",

[[monthAndYearFormatterlocale] localeIdentifier], [monthAndYearFormatterstringFromDate:[NSDatedate]]);

NSLocale *tempLocale=[NSLocalecurrentLocale];

dateFormat = [NSDateFormatterdateFormatFromTemplate:dateComponents options:0locale:[NSLocalecurrentLocale]];

NSLog(@"Date format for %@: %@",

[gbLocale displayNameForKey:NSLocaleIdentifiervalue:[tempLocale localeIdentifier]], 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开发中如何处理应用国际化和日期格式的问题。介绍了应用名称的本地化方法,如何在不同地区显示正确的日期格式,以及如何处理不同日历系统。文章提供了代码示例和实际操作指南,帮助开发者打造能够适应全球用户需求的应用。 阅读详情

相关推荐

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5380

在开发iOS程序时对日期处理的总结

原帖请参考: http://kevin-wu.net/ios-locale-and-calendar-tips/ 由于iOS的设备对应多国语言,用户也可以选择不同的日历模式。比如日本的和历,泰国日历等等。 用户也可以自行设定24小时制或者12小时制来显示时间。这些设置会直接影响应用程序取得的日期。 我写这篇文章来总结一下程序中相关的类和设备的各种设定的关系。 ...

weixin_33672400的博客 233

(头歌作业)—6.1 葡萄酒评论分析报告(project)

请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。请读取文件中的数据,完成以下任务:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。

2301_80677920的博客 1245

iOS 开发中的日期格式

NSDateFormatter G:公元时代, 例如AD公元 yy:年后的2位 yyyy:完整年 MM:月,显示为1-12 MMM:月,显示为英文月分简写,如: Jan MMMM:月, 显示为英文月分全称,July dd:日, 2位数表示,如02 d:日,1-2位显示, 如2 EEE: 简写星期几,如Sun EEEE:全写星期几,如Sunday aa:上下午,AM/PM ...

LeveBe的博客 1596

告别Arduino IDE!用VSCode搭建Arduino UNO R3开发环境(含代码补全配置)

本文详细指导如何用VSCode替代Arduino IDE搭建Arduino UNO R3开发环境,包含代码补全配置和高效开发技巧。通过安装必要插件、配置项目结构和优化工作流,可显著提升开发效率,特别适合复杂项目开发。文章还提供了常见问题解决方案和高级功能调优方法。

weixin_30698297的博客 477

用Python+PyTorch实现DQN无人机避障:从环境搭建到实战训练(附完整代码)

本文详细介绍了如何使用Python和PyTorch框架,基于深度强化学习中的DQN算法,实现一个无人机自主避障系统。内容涵盖从自定义环境搭建、DQN智能体核心算法实现,到完整的训练流程与超参数调优,并提供了可视化演示与进阶优化方向,为开发者提供了从理论到实践的完整指南。

kubernetes8ctl的博客 640

android 获取当前时间日期并英文显示

文章链接

Willow_Spring的博客 959

BIOS更新后PIN不可用怎么办?从原理到实操的完整修复指南

在计算机维护中,BIOS更新是常见的固件升级操作,但其引发的登录异常却常让用户措手不及。Windows Hello PIN并非传统密码,它通过TPM芯片与设备启动环境(PCR状态)强绑定,一旦主板固件或安全启动配置改变,TPM便会拒绝释放密钥,导致“由于此设备上的更改,你的PIN不再可用”。理解这一原理后,恢复路径清晰可控:优先尝试密码登录,或通过WinRE替换utilman.exe创建临时管理员,必要时还需处理BitLocker恢复密钥。本文面向系统维护与数据安全场景,系统梳理PIN失效的恢复流程与避坑方

weixin_31364787的博客 363

不同编程语言中获取现在的Unix时间戳

如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScript Math.round(new Date().getTime()/1000)getTime()返回数值的单位是毫秒 Microsoft .NET / C# epoch = (DateTime.Now.ToUniversalTime().Ticks...

weixin_34186128的博客 194

Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)

在12.0的系统定制化开发中,由于从12.0开始SystemUI下拉状态栏和11.0的变化比较大,所以可以说需要从新分析相关的SystemUI的 布局,然后做分析来实现不同的功能,今天就开始实现关于隐藏SystemUI下拉状态栏中的通知栏布局系列二,去掉下拉状态栏中 通知栏部分 白色的圆角背景

安卓兼职framework和app工程师的博客 1634

如何使用VNC对openEuler系统进行远程图形化操作

本文详细介绍了在openEuler系统中配置VNC远程图形化操作的方法。主要内容包括:1)服务端配置:安装GNOME图形界面和TigerVNC服务,创建VNC用户并设置密码,配置VNC服务启动脚本;2)客户端连接:使用VNC Viewer等工具连接服务器;3)常见问题解决方法。通过5901端口建立连接后,用户可远程操作openEuler图形界面,适用于需要图形化管理的场景。

2501_93651177的博客 314

iOS国际化适配终极指南:多语言与区域设置最佳实践

想要让你的iOS应用走向全球市场吗?国际化适配是让应用支持多语言和不同地区用户的关键步骤!🚀 本文将为iOS开发者提供完整的国际化适配解决方案,涵盖多语言设置、区域配置等核心内容,帮助你的应用轻松应对全球用户需求。 TimLiu-iOS项目是一个全面的iOS开发学习教程和示例代码库,为开发者提供了丰富的国际化适配资源和最佳实践指导。无论你是初学者还是经验丰富的开发者,都能从中找到实用的解决方案

gitblog_00767的博客 1128

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

KIF多语言测试支持:国际化iOS应用的功能测试策略

在当今全球化的移动应用市场中,**KIF多语言测试支持**成为了iOS开发者确保应用质量的关键工具。KIF(Keep It Functional)作为一个强大的iOS功能测试框架,为国际化应用提供了全面的测试解决方案,帮助开发者构建真正面向全球用户的应用程序。 ## 🌍 为什么国际化测试如此重要? 国际化应用需要适应不同地区的语言、文化和习惯。**KIF多语言测试**能够验证应用在各种语言环

gitblog_01085的博客 865

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SwiftDate终极指南:CarPlay车载应用中的日期显示最佳实践

在开发CarPlay车载应用时,日期和时间的精准显示与交互是提升用户体验的关键环节。SwiftDate作为一款功能强大的Swift日期处理工具包,能够帮助开发者轻松实现日期解析、验证、操作、比较和显示等复杂功能。本文将详细介绍如何利用SwiftDate打造符合CarPlay安全规范和用户体验要求的日期显示方案,让驾驶过程中的时间信息获取更加直观高效。 [![SwiftDate Logo](htt

gitblog_00271的博客 1028

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

如何利用JSONModel实现iOS应用的完美国际化:完整指南

JSONModel是一款功能强大的数据建模框架,广泛应用于iOS、macOS、watchOS和tvOS应用开发中。它能帮助开发者快速创建智能数据模型,自动处理JSON数据与模型对象之间的转换,极大减少手动编码工作。本文将详细介绍如何利用JSONModel的国际化特性,轻松处理多语言和区域设置,为全球用户提供更优质的应用体验。 ## 为什么选择JSONModel进行国际化处理? 在全球化应用开发

gitblog_00932的博客 488

IOS 设置ios中DatePicker的日期为中文格式

设置ios中DatePicker的日期为中文格式 1.在模拟器中的“设置”-“通用”-“多语言环境”-“语言”设置为“简体中文”, 2.“区域格式”设置为“中国”。 转载于:https://www.cnblogs.com/lihaibo-Leao/p/3557333.html...

weixin_30597269的博客 120

Notchi本地化教程:如何添加新语言支持与区域适配

Notchi是一款为Claude Code和Codex打造的Notch应用,通过本教程,你将学习如何为Notchi添加新的语言支持,实现应用的区域适配,让全球用户都能获得更好的使用体验。 ## 本地化准备工作 在开始本地化之前,首先需要准备好开发环境和相关文件。Notchi的本地化主要通过`Localizable.xcstrings`文件实现,该文件位于项目的`notchi/notchi/`目

gitblog_00654的博客 441

iOS日期处理小结

由于iOS的设备对应多国语言,用户也可以选择不同的日历模式。比如日本的和历,泰国日历等等。 用户也可以自行设定24小时制或者12小时制来显示时间。这些设置会直接影响应用程序取得的日期。我写这篇文章来总结一下程序中相关的类和设备的各种设定的关系。NSCalendar[NSCalendar currentCalendar] [NSCalendar autoupdatingCurrentCalenda

dean19900504的专栏 1050

SwiftUIX国际化:多语言与区域适配方案

在全球化应用开发中,多语言与区域适配是提升用户体验的关键环节。SwiftUIX作为SwiftUI的扩展库,提供了多种工具和组件简化国际化流程。本文将系统介绍如何利用SwiftUIX实现应用的多语言支持、区域格式适配及动态切换功能,帮助开发者构建面向全球用户的应用。 ## 国际化基础架构 SwiftUIX的国际化架构基于Apple的Localization(本地化)框架构建,通过环境变量和属性包...

gitblog_00359的博客 1037

在iOS开发中对日期处理的总结

由于iOS的设备对应多国语言,用户也可以选择不同的日历模式。比如日本的和历,泰国日历等等。 用户也可以自行设定24小时制或者12小时制来显示时间。这些设置会直接影响应用程序取得的日期。 我写这篇文章来总结一下程序中相关的类和设备的各种设定的关系。 NSCalendar [NSCalendar currentCalendar] [NSCalendar autoupdatingC

Junyan_Jaya的博客 414
上一篇: @selector
下一篇: NSProcessInfo类方法
lidechen2014
博客等级 码龄17年 6粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值