`
810364804
  • 浏览: 788550 次
文章分类
社区版块
存档分类
最新评论

iOS nsdateformatter AM/PM issue

 
阅读更多

requirement很简单,需要显示的时间格式满足:

* 用AM/PM表示,而不是24小时制

* 如果小时数是单位数,则不加0,例如16:30:00,应该显示 "4:30:00 PM",而不是"04:30:00"

对于下面这段代码

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"h:mm:ss a"];
    NSLog([dateFormatter stringFromDate:[NSDate date]]);

我本以为可以满足我要求,但是在AIMS app里,却发现如下问题:

1. 如果我在iphone里的设置> 一般> 日期与时间 中 enable 24小时制,那么上面代码对于16:30:00是显示“16:30:00”,而不是"4:30:00 PM"

2. 即使我disable24小时制,由于我的语言设置是中文,那么上面代码对于16:30:00是显示“4:30:00 下午”,而不是"4:30:00 PM"


找到的解决方案是:对NSDateFormatter实例的locale属性进行设置,使得它强制采用“en-US”的方式

dateFormatter.locale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];

因此,完整代码应该是

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.locale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];
    [dateFormatter setDateFormat:@"h:mm:ss a"];
    NSLog([dateFormatter stringFromDate:[NSDate date]]);


分享到:
评论

相关推荐

    swift-NSDate总结NSDateFormatter总结

    NSDate总结,NSDateFormatter总结,NSCalender总结,倒计时(60秒倒计时,天数倒计时,cell上天数倒计时)

    NSDateFormatter性能优化

    NSDateFormatter多次创建是很耗性能的,比如创建10240次,会花费3.4秒的时间,下面介绍三种创建方法,推荐用第三种:

    ios开发记录

    状态栏20键盘高度216导航44 最少2位 补0 // UIColor *color2 = [[UIColor alloc] initWithRed:0 green:1 blue:0 alpha:1]; // button setTitle:@"点我吧" forState:UIControlStateNormal]; // [button addTarget:...

    iOS NSdate 时间转换

    单例封装NSDateFormatter,根据需求自由封装显示时间格式

    ios-KSDatePicker.zip

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd"]; [sender setTitle:[formatter stringFromDate:currentDate] forState:UIControlStateNormal]; }...

    iOS获取当前时间和当前时间戳的方法

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制 [formatter setDateFormat:@YYYY-MM-dd HH:mm:ss]; //现在时间,你可以...

    ios开发中时间转换的方法集锦

    在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。 例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] ...

    ESLocale:这个库包含帮助类来生成正确格式的 NSLocale、NSDateFormatter 和 NSCalendar 对象

    分配该库支持所有分发方式: 可可豆iOS 静态库iOS 静态框架包管理器(自 ESLocale v1.2.1 起)从网络解析日期通常,为了解析日期字符串,可以使用类似于以下代码的内容: NSDateFormatter * ansi = [ ...

    iOS 使用AFN上传视频到服务器示例代码

    这里介绍用AFN上传本地拍摄的视频到服务端。 整体思路:拿到视频资源,先转为mp4,写进沙盒,然后上传,上传成功后要记得删除沙盒中的文件。...NSDateFormatter* formater = [[NSDateFormatter alloc

    iOS中NSNumberFormatter的介绍与用法

    iOS中NSDateFormatter用的范围一般来说比较广泛,不过相对于处理数字而言,很少用到NSNumberFormatter,NSNumberFormatter中有很多枚举类型,会为实际开发节省时间. NSNumberFormatter可以用来处理NSString和...

    iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例

    前言 本文实现的效果类似于QQ空间里的好友发表的动态,会显示好友发表的...NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@yyyy-MM-dd HH:mm:ss]; NSDate *timeDa

    iOS实现视频压缩上传实例代码

    之前写过图片上传PHP服务器,今天把接口稍微改了一下,把视频上传... NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init]; [dateformatter setDateFormat:@YYYY-MM-dd-HH-mm-ss]; NSString *dateName =

    iOS中控制NSLog输出时机详解

    -(void)saveDEBUGlog{ NSArray *paths = NSSearchPathForDirectoriesInDomains... NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@yyyy_MM_dd_HH_mm_ss];

    nsdateformatter.com:nsdateformatter.com的源代码。 使用蒸气使用Swift构建。 托管在Heroku

    有关DateFormatter的有用参考( NSDateFormatter )。 包括用于实时格式化任意日期和格式的表格,以及基于当前日期的预先计算的参考表。 在Linux上使用Swift 4.2构建。 要了解有关使用DateFormatter更多信息,请...

    iOS开发之时间戳(或date)转字符串的实例代码

    1.时间戳转字符串 ///时间戳转化为字符转0000-00-00 00:00 + (NSString *)time_... NSDateFormatter *dateFormat=[[NSDateFormatter alloc]init]; [dateFormat setDateFormat:@yyyy-MM-dd HH:mm]; NSString* strin

    iOS使用AFN进行单图和多图上传的实例代码

    图片上传时必要将图片进行压缩,不然会上传失败 1.单张图上传 AFHTTPRequestOperationManager *manager = ...NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateForm

    FMDBLib IOS

    第三方数据库工具 @interface FMDatabase : NSObject { sqlite3* _db; NSString* _databasePath; BOOL _logsErrors; BOOL _crashOnErrors;... BOOL _traceExecution;... NSDateFormatter *_dateFormat; }

    iOS 获得现在的时间代码

    一, 代码。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. ... NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    iOS中时间与时间戳的相互转化实例代码

    本人搜索了很多关于iOS中时间与时间戳的相互转化的资料,下面我来记录一下,有需要了解iOS中时间与时间戳的相互转化的朋友可参考。希望此文章对各位有所帮助。 //获取当前系统时间的时间戳 #pragma mark - 获取当前...

Global site tag (gtag.js) - Google Analytics