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]]);
本文探讨了使用NSDateFormatter在iOS应用中遇到的时间格式显示问题,特别是如何在不同语言和地区设置下保持一致的12小时制AM/PM格式。通过设置NSDateFormatter的locale属性为en_US来确保格式统一。

2459

被折叠的 条评论
为什么被折叠?



