2013-08-02 4 views
0

내 코드에 문제가있어 무엇이 잘못되었는지 확신 할 수 없습니다. iOS5.1에 대한NSDateFormat을 사용하려고 할 때 iOS 6가 표준 시간대 PHT를 지원합니까?

NSString* dateFormat1 = @"EEE MMM dd HH:mm:ss V yyyy"; 
NSString* dateString1 = @"Fri Jul 26 00:00:00 PHT 2013"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:dateFormat1]; 

내 결과 : 아직도 널이기 때문에 아이폰 OS 6.0

를 들어

2013-08-02 11:59:08.459 MySandbox[41502:c07] 2013-07-25 16:00:00 +0000 

2013-08-02 12:02:37.454 MySandbox[41581:c07] (null) 

* 참고, 내가 대신 ZZZ 또는 Z의, V를 사용했다. * 주 2, PHT를 PST로 변경하려고 시도했지만 효과가있었습니다. JST로 변경되었지만 작동하지 않았습니다.

올바른 형식을 사용하지 않을 것으로 추측됩니다. 내가 정말로 사용해야하는지 잘 모르겠다.

* 참고 3,이 question에 따르면 실제로 iOS5와 iOS6에서 변경된 사항이 있으므로 iOS5가 작동 한 이유가 여기에 있습니다.

답변

1

these docs from Apple에 따르면 NSDateFormatter은 "유니 코드 기술 표준 # 35"의 일부인 유니 코드 날짜 형식 패턴을 사용합니다. 이 표준은 발전 중이며 iOS 5는 version 19을 사용하고 iOS 6은 version 25을 사용합니다.

"부록 J : 시간대 표시 이름"(version 19 또는 version 25)에서 시간대에 대해 지원되는 값에 대해 읽을 수 있습니다.

왜 정확히 PHT이 지원 되었는가와 그렇지 않은지 정확히 모르겠습니다. 그러나 일반적으로 내가 줄 수있는 최선의 조언은 표준 시간대 약어를 사용하지 않는 것입니다. PHT은 고유하지만 모호한 다른 많은 약어가 있습니다. See the list here.

가능한 경우 IANA 표준 시간대 이름을 사용해야합니다. (tr-35 표준은이를 "골든 존"이라고 부릅니다.) 귀하의 경우에는 Asia/Manila이됩니다. You can find a full list here. 나는 Objective C 개발자가 아니므로 입력 문자열에 어떻게 사용하는지 정확하게 알지 못합니다. VVVV 형식 지정자를 사용해 볼 수는 있지만 직접 IANA 이름을 사용하는지 여부는 확실하지 않습니다.

그림과 같이 [NSTimeZone abbreviationDictionary]에서 결과를 확인할 수 있습니다 (in this answer). 그 게시물에, 그것은 PHT = "Asia/Manila"을 표시하지만, 나는 그들이 IOS가 생성 된 게시 된 날짜로 가정합니다.