NSLocale大部分是空的 - 在哪里属性?
-
22-07-2019 - |
题
我真的只是想知道用户是否设置了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;
不隶属于 StackOverflow