NSDateFormatter是否有一个日期格式字符串,可以检测12或24和1或0小时格式?
除非我读错了,否则Unicode规范说可以使用'j'来达到目的。例如,以下内容应使用1-12,0-23或1-24小时,具体取决于区域设置,但NSDateFormatter只创建一个空字符串。
NSDateFormatter *minuteFormatter = [[NSDateFormatter alloc] init];
minuteFormatter.locale = [NSLocale currentLocale];
minuteFormatter.dateFormat = @"jj";
我见过很多人建议使用以下内容来正确解释用户的语言环境,但我只想要一个包含小时的字符串,而不是必须解析生成的字符串。
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
答案 0 :(得分:3)
这是一个特殊用途的符号。它不得出现在模式或骨架数据中。相反,它保留用于传递给执行灵活日期模式生成的API的骨架。在这样的上下文中,它请求区域设置(h,H,K或k)的首选小时格式,这由h,H,K或k是否以区域设置的标准短时间格式使用来确定。在这种API的实现中,在开始与availableFormats数据匹配之前,'j'必须被h,H,K或k替换。请注意,在传递给API的骨架中使用'j'是让骨架请求区域设置的首选时间周期类型(12小时或24小时)的唯一方法。
这可能意味着在进入日期格式化之前需要解决它。
尝试使用+ (NSString *)dateFormatFromTemplate:(NSString *)template options:(NSUInteger)opts locale:(NSLocale *)locale
检索格式字符串。
NSString *format = [NSDate dateFormatFromTemplate:@"jj" options:0 locale: myLocale];
hourFormatter.dateFormat = format;