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]]);
1. 如果我在iphone里的设置> 一般> 日期与时间 中 enable 24小时制,那么上面代码对于16:30:00是显示“16:30:00”,而不是"4:30:00 PM"
2. 即使我disable 24小时制,由于我的语言设置是中文,那么上面代码对于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]]);