iPhone이 12 시간 또는 24 시간 모드로 시간을 표시하는지 여부를 어떻게 확인할 수 있습니까?iPhone이 12 시간 또는 24 시간 모드로 시간을 표시하는지 여부를 감지합니까?
현재 현재 지역에서 변경 사항을 모니터링하고 있지만 시간 표시 방법에만 영향을 미치는 것은 아닙니다. & 시간 설정의 24 시간 토글은 현재 지역 설정보다 우선합니다.
12/14 시간 설정을 감지하는 방법이 있습니까?
iPhone이 12 시간 또는 24 시간 모드로 시간을 표시하는지 여부를 어떻게 확인할 수 있습니까?iPhone이 12 시간 또는 24 시간 모드로 시간을 표시하는지 여부를 감지합니까?
현재 현재 지역에서 변경 사항을 모니터링하고 있지만 시간 표시 방법에만 영향을 미치는 것은 아닙니다. & 시간 설정의 24 시간 토글은 현재 지역 설정보다 우선합니다.
12/14 시간 설정을 감지하는 방법이 있습니까?
NSLocale
카테고리에 추가 한 약간의 기능으로이를 확인하는 방법을 알았습니다. 그것은 꽤 정확하고 여러 지역에서 테스트하는 동안 아무런 문제가 발견되지 않았습니다.
@implementation NSLocale (Misc)
- (BOOL)timeIs24HourFormat {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *dateString = [formatter stringFromDate:[NSDate date]];
NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];
BOOL is24Hour = amRange.location == NSNotFound && pmRange.location == NSNotFound;
[formatter release];
return is24Hour;
}
@end
NSDateFormatter
클래스를 사용하고 있습니까? 내가 아는 한, 사용자는 지역 시간 형식 설정을 존중합니다.
편집 - 재 : 당신의 코멘트 :
형식 문자열 비교는 올바른 방법이 될 수 있습니다. 앱이 종료로, 다시 할 때 응용 프로그램 출시를 그렇게하고 기본값에 저장된 값에 대해 그것을 확인
NSDateComponents *midnightComp = [[NSDateComponents alloc] init];
[midnightComp setHour:0]
[midnightComp setMinute:0];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateStyle:NSDateFormatterNoStyle];
[format setTimeStyle:NSDateFormatterShortStyle];
BOOL midnightIsZeros = [[[format stringFromDate:[[NSCalendar currentCalendar] dateFromComponents:midnightComp]] substringToIndex:2] isEqualToString:@"00"];
[[NSUserDefaults standardUserDefaults] setBool:midnightIsZeros forKey:@"TimeWas24Hour"];
실행 :의 라인을 따라 뭔가.
기본적으로 마지막로드 이후 설정이 변경되었는지 여부를 감지해야합니다. 로케일 식별자를 감지 할 수는 있지만 24 시간 설정에 대한 설정은 없습니다. 내가 생각할 수있는 것은 저장된 형식의 날짜 문자열을 비교하는 것이지만 시간대와 일광 절약 시간에 직접적인 문제가 발생할 수있는 문제가 있습니다. –
그 주셔서 감사합니다. 그러나 여러 지역이 실제로 24 시간 모드에서 0으로 시간을 표시합니다. –
그런 경우 위의 두 글자를 잡고 "00"인지 "0 :"인지 확인하십시오. –