2014-09-09 2 views
-1

에 나는 문자열 GTM + 5가 : (30)와 나는 그와 관련된 시간대 이름 예를 원하는 : 아시아/콜카타GMT + 5 : 30 NSTimeZoneName 문자열

를 얻을 수있는 가능한 방법이 있나요합니다.

NSTimeZone* localTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT+5:30"]; 
NSLog(@"Name: %@",localTimeZone.name); 

이 시간대 이름 (아시아/콜카타) 내가 문자열이있는 경우

시간대 이름 (아시아/콜카타)를 얻을 수있는 방법을 찾아 도와주세요를 반환하지 않습니다 GMT + 5 : 30

+0

그 반대입니다. 'GMT + 5 : 30' 대신에 http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations을 넣어야합니다. – Larme

+0

왜 시간대 이름을 원하십니까? –

+0

나는 [nsdateformate datefromtimezone : [nstimezone timezonewithname : ]];을 설정하려고하기 때문에; 그래서 내가 한 것은 [dateFr setTimeZone : [NSTimeZone timeZoneWithName : @ "UTC + 10 : 00"]]]; 그것은 나를 위해 일했습니다 .... – GouthamDevaraju

답변

1

알려진 표준 시간대를 열거하고 각 시간대에서 원하는 표준 시간대와 같은 오프셋이 있는지 확인하십시오. 내 테스트 프로그램 :

#import <Foundation/Foundation.h> 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"GMT+5:30"]; 
     NSInteger secondsFromGMT = timeZone.secondsFromGMT; 
     for (NSString *name in [NSTimeZone knownTimeZoneNames]) { 
      NSTimeZone *candidate = [NSTimeZone timeZoneWithName:name]; 
      if (candidate.secondsFromGMT == secondsFromGMT) { 
       NSLog(@"%@ is currently the same offset from GMT as %@", candidate.name, timeZone.name); 
      } 
     } 
    } 
    return 0; 
} 

출력 :

2014-09-09 09:09:01.897 timezone[87091:303] Asia/Colombo is currently the same offset from GMT as GMT+0530 
2014-09-09 09:09:01.898 timezone[87091:303] Asia/Kolkata is currently the same offset from GMT as GMT+0530 

명백하게 GMT+5:30 옵셋 동일한 두 시간대있다. (다른 오프셋에 대해서는 더 많은 것들이있을 수 있습니다, 예를 들어 GMT-0500을 시도하십시오.) 사용하려는 것을 결정하는 것은 당신에게 달려 있습니다.

+1

정확하게 문제는 주어진 날짜에 동일한 GMT 오프셋을 가진 여러 시간대가있을 수 있다는 것입니다. 그러나 각각의 시간대는 DST 등을위한 자체 규칙을 가질 수 있습니다. – uchuugaka