코코아에서는 NSTIMEZONE을 사용하여 시스템 시간대 오프셋을 문자열로 얻으려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1052373

문제

PDT의 경우 "-0700"을 원할 것입니다.

나는 과거에 어떤 일이 일어 났는지 결정하기 위해 데이트를 받고 있습니다.

NSDate *then = [NSDate dateWithString:@"1976-04-01 12:34:56 -0700"]; // Note the hard-coded time zone at the end

다른 곳에서 날짜 문자열을 구성 할 것이지만 현지 시간대에 액세스하는 방법을 모르겠습니다.

나는 Cocoa와 Nstimezone 및 NSDate 클래스 참조에 대한 Apple Dates and Times 프로그래밍 주제를 읽었지만 정보를 정리하기에는 너무 어렵습니다. 실제로 몇 줄의 코드를 사용하여 사용 방법을 보여줄 수 있습니다.

업데이트: 이것으로 어려움을 겪고있는 동안, 나는 명령 줄 템플릿을 사용하여 코드를 작성하여 빨리 시도 할 수있었습니다. 방금 iPhone에서 이전 코드를 시도했는데 NSDate는 '+datewithString :'에 응답 할 수 없습니다. 혼란에 추가된다면 죄송합니다. 애플이 그러한 기본 수업을 바꿀 것이라는 것을 알고있었습니다.

도움이 되었습니까?

해결책

시간대 오프셋은 세계의 많은 날짜에 따라 달라집니다. 이는 일광 절약 시간/여름 시간을 사용하는 부분에 따라 다릅니다.

올바른 방법은 날짜와 시간대에서 전체 문자열을 함께 생성하는 것입니다. 이를 위해 nsdateformatter를 사용하십시오.

다른 팁

사용 NSDateFormatter 문자열에서 nsdate를 빌드하려면 :

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];

NSDate *formatterDate;
formatterDate = [inputFormatter dateFromString:@"1976-04-01 12:34:56 -0700"];

NSString *dateString = [inputFormatter stringFromDate:formatterDate];

NSLog(@"date:%@", dateString);

이렇게하면 문자열에서 현지 시간을 얻습니다 (예 : 문자열에 지정된 날짜).

"1976-04-01 12:34:56 -0700"

시간대에 있습니다 -0700, (나는 시간대 GMT +1000에 있습니다) : 나는 다음과 같습니다.

2009-11-17 22 : 13 : 46.480 Cmdline [10593 : 903] 날짜 : 1976-04-02 05:34:56 +1000

가장 좋은 방법은 아마도 간단한 캘린더 포맷터를 사용하는 것입니다.

NSCalendarDate * date = [NSCalendarDate calendarDate];
[date setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"PDT"]];
NSLog([date descriptionWithCalendarFormat:@"%z"]);

'-0700'을 출력합니다.

또는 시스템의 현재 시간대를 원한다면 두 번째 줄을 제외하십시오 (어떤 것을 요구했는지 확실하지 않음).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top