문제

사용자가 시간 표시를 위해 iPhone을 12 시간 모드로 설정했는지 알고 싶습니다.

그만큼 NSLocale 수업은 내가 무엇을했는지에 대해 설명하는 것처럼 보였습니다 (예제 나 명백히 유용한 방법이없는 모호한 용어로).

그래서 나는 일부를 만들었습니다 NSLocale 그렇게 같은 개체 :

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

디버거를 사용하여 이러한 물체를 검사 할 때 NSLog(), 내가 얻을 수있는 가장 좋은 것은 다음과 같은 것입니다.

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

현재 로케일에는 ID 문자열이 있지만 다른 것은 없습니다.

문서에서, 나는 로케일에서 값을 조회 할 수 있으며, 그 중 하나는 NSCalendar 물체. 그래서 나는 그것을 되 찾아서 그것을 보았고, 그것이 "그레고리안"이라고 말합니다.

모든 것이 분명히 누군가에게 사용 된 것 같습니다 ...하지만 내가 정말로 좋아하는 것은 모든 실제 시스템 속성을 보여주는 멋진 속성의 큰 사전입니다. NSDateFormatters Formatters가 사용하도록 강요했지만 사용자가 12 시간 형식을 선택했을 때 계속 폭발하지 마십시오. en_US_POSIX 로케일과 고정 setDate 체재.

(확실해 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