我真的只是想知道用户是否设置了iPhone到12小时模式时间显示。

NSLocale类似乎描述(在模糊的非特异性方面没有任何例子或明显有用的方法)我是什么之后。

因此,我已创建了一些NSLocale对象像这样:

NSLocale *systemLocaleApparently = [NSLocale systemLocale];
NSLocale *currentLocaleWithLotsOfGoodies = [NSLocale autoupdatingCurrentLocale];

当我检查使用调试器或NSLog()这些目的,我可以得到最好的是沿着这些路线的东西:

<CFLocale 0x1278e0 [0x382084f8]>{type = system, identifier = ''} 

在当前区域中有一个ID字符串,但仅此而已。

从文档,我可以从区域设置查找值,并且这些中的一个是一个NSCalendar对象。于是我找回来,并看看它,它告诉我,它是“公历”。

所有这一切显然是利用给别人的......但我真的想是显示所有的实际系统性能属性的一个漂亮的大辞典,主要是让我NSDateFormatters不守炸毁当用户选择即使我已经迫使格式化使用en_US_POSIX区域设置和固定setDate格式12小时格式。

(我敢肯定,NSCalendarDate从来没有使用有这些问题...)

希望我大摇大摆地失去了一些东西(也可能是令人尴尬的)很明显,但也许有人会亲切与我分享。请:)

有帮助吗?

解决方案

下面是说,如果用户已经设置的时间格式转换为12小时或24小时的格式的一种方法:

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
// Look for H (24-hour format) vs. h (12-hour format) in the date format.
NSString* dateFormat = [formatter dateFormat];
BOOL using24HourClock = [dateFormat rangeOfString:@"h"].location == NSNotFound;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top