我想创建自定义时间格式,但我需要知道用户的系统首选项是否需要24小时或AM / PM格式。我查看了NSCalendar和NSLocale但找不到它。
*** UPDATE
由于另一个问题没有明确让我们知道如果用户想要24小时时间风格如何获取,我正在回答我发现的其他2个问题中的这个问题。但是如果能起作用仍然需要确认吗?
NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]];
BOOL is24HourStyle = [fmt rangeOfString:@"HH"].location != NSNotFound;
NSLog(@"%@", fmt);
NSLog(@"is 24 %@", is24HourStyle ? @"YES" : @"NO");
答案 0 :(得分:1)
根据http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns:
因此,要检查24小时格式,您应该检查格式中是否出现“H”或“k” 从模板生成:
NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]];
BOOL is24HourStyle = [fmt rangeOfString:@"H"].location != NSNotFound
|| [fmt rangeOfString:@"k"].location != NSNotFound;
我找不到小时格式为“k”或“K”的语言环境,但是例如在结束 locale,“jm”扩展为“H.mm”,因此检查“HH”是不正确的。