2009-12-13 4 views

답변

3

[someNSDateFormatter stringFromDate : someDate] 또는 [someNSDateFormatter dateFromString : someString]을 수행하는 것이 가장 좋습니다.하지만 실제로 묻고 싶은 것을 수행하려면 Unicode standard for date format strings을 살펴보십시오. iPhone OS가 사용합니다.

특히 AM/PM 기호에는 a가 사용되며 h/hh/H/HH/k/KK는 0 또는 1에서 계산되는 경우에 따라 시간 기호에 대한 모든 가능성이 12이며 또는 24 시간, 0이 아닌 패드. 리터럴 문자는 작은 따옴표로 포함 할 수 있기 때문에 당신이 차지해야 할 것이다, 그래서 당신은 조심해야,

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterNoStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterLongStyle]; 

if([[dateFormatter dateFormat] containsString:@"a"]) { 
    // do something 
} else { 
    // do something else 
} 

[dateFormatter release]; 

그러나 :

코드는이의 라인을 따라 뭔가있을 구현 . h 또는 k를 찾아 볼 수도 있지만, 프랑스 인이 오후 2시 5 분을 14시 05 분으로 표시하기 때문에 조심해야합니다 (아이폰에 표시되는 방법이 맞는지는 확실하지 않지만 자주 쓰는 방법입니다). 따라서 시간 형식 k'h'mm과 같은 것을 포함 할 수도 있습니다

1

로캘 설정 모음이므로 로캘 설정이 아닙니다. 그것은 시간 포맷의 일부이며, 그 중 4 개가 (적어도 Mac에서는) 항상 동일한 AM/PM 지정을 사용하지는 않습니다. Mac의 경우 AM/PM 세그먼트가있는 24 시간 단위를 사용하여 '17:35 PM'과 같이 출력 할 수도 있습니다 (그래도 그래도 가능).

가장 간단한 방법은 날짜 형식화 프로그램에 날짜 개체의 시간 형식을 지정하도록 요청하는 것입니다. 사용자가 수행하는 작업에 의미가 있다고 가정하면됩니다. 그렇지 않다면, 즐거운 시간이 당신의 방법으로 향하게됩니다.

iPhone에서 형식 문자열의 UI는 토글 스위치 (24 시간 켜기 또는 끄기)이므로 병리학 적 사례는 걱정할 필요가 없습니다. 사용자 기본값의 AppleICUTimeFormatStrings에있는 형식 문자열 중 하나를 선택한 다음 구문 분석하여 AM/PM format characters 중 하나를 찾습니다. '' 사이의 내용은 건너 뜁니다. 내용은 문자가 아닌 리터럴 문자열입니다.

Mac에 앱을 가져올 지 조심하십시오. 그렇게한다면 형식 문자열을 이해하는 데 신경 쓰지 않아도됩니다. 사용자 환경 설정에서 확인란을 선택하기 만하면됩니다.

+0

고마워요! 가치가있는 것보다 더 많은 문제가있는 것 같고 (그다지 견고하지도 않다.) ... 나는 단지 내 앱 선호도 아래서 전환 할 것이다. –

+0

iPhone 앱에서 그렇게 할 경우, 모든 앱의 설정 (시간 포맷 관리)에 이미 스위치가 설정되어 있기 때문에 사용자가 해당 앱을 보거나 예상하지 못할 수도 있습니다. 최악의 경우는 평론가가 당일 나쁜 날을 보내고이 "중복 된 기능"처럼 보이지 않을 것입니다. –

관련 문제