2014-04-16 60 views
0

我想创建自定义时间格式,但我需要知道用户的系统首选项是否需要24小时制或AM/PM格式。我查看了NSCalendar和NSLocale,但找不到它。从当前日历/区域设置获取时间格式(上午/下午或24小时)

*** 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

[基于语言环境的设备的日期格式]可能的重复(http://stackoverflow.com/questions/16481287/date-formats-from-device-based-on-locale) - 特别看到这个答案:http ://stackoverflow.com/a/16515219/1187415。 –

+0

这个答案有帮助,但没有解释如何确切知道它的24小时时间风格与否。仍然需要一些帮助。 –

回答

1

根据http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns

  • 'J' 为柔性的日期模式生成的专用符号。它请求区域设置的首选小时格式,并且必须替换为'h','H','K'或'k'。
  • 'h'和'K'是12小时制格式的符号。
  • 'H'和'k'是24小时制格式的符号。

    NSString *fmt = [NSDateFormatter dateFormatFromTemplate:@"jm" options:0 locale:[NSLocale currentLocale]]; 
    BOOL is24HourStyle = [fmt rangeOfString:@"H"].location != NSNotFound 
            || [fmt rangeOfString:@"k"].location != NSNotFound; 
    

    我无法找到一个语言环境:

所以,检查是否有24小时的格式,你应该当“H”或“K”从模板生成的格式 出现,请检查小时格式为“k”或“K”,但例如在完成 区域设置中,“jm”扩展为“H.mm”,因此检查“HH”是不正确的。

相关问题