2012-01-04 2 views
1

[NSDate date]는 시뮬레이터에서 GMT를 반환합니다 ... 기기에서 몇시에 돌아 오나요? 또한 프로그래밍 방식으로 시뮬레이터 시간을 얻으려면 어떻게해야합니까?[NSDate date]에 관한 혼동

답변

6

현재 날짜와 시간을 반환합니다. NSDate는 시간대와 무관합니다. NSDate의 -description은 GMT 일 수 있지만 그럴 필요는 없습니다.

다른 버전의 운영 체제에서도 일관성을 유지한다고 보장 할 수 없습니다. 날짜 형식을 지정하려면 대신 날짜 포맷터 객체를 사용해야합니다.

표시하거나 다른 시간대의 날짜를 구문 분석, NSDateFormatter를 사용 (및 시간대/로케일 속성을 수정) 또는 -descriptionWithLocale:를 사용하려면

.

NSLocale* currentLocale = [NSLocale currentLocale] 
NSLog(@"current locale = %@", [currentLocale localeIdentifier]); 
NSLog(@"date = %@", [[NSDate date] descriptionWithLocale:currentLocale]; 
+0

내 시뮬레이터에서 GMT 시간을 반환합니다 .. 12:36:33 실제 시뮬레이터가 오후 6:09에 표시되는 반면 .. O –

+0

@AnkitSrivastava : 시간을 어떻게 인쇄하나요? – kennytm

+0

NSLog (@ "nsdate % @", [NSDate date]); –

1

NSDate는 시간대와 무관합니다. description으로 설명을 가져 오면 시간대가 표시되지만 이는 완전히 "정보 제공"이며, 알기에 해당 시간대 정보 (description 제외)를 설정하거나 액세스 할 수있는 방법이 없습니다. NSDate 객체에 저장된 값은 GMT/UTC입니다 (당연히 잘못된 시간을 알려주는지 여부는 알 수 없지만).

현재 시간과 날짜에 대한 시뮬레이터의 이해를 얻으려면 [NSDate date]을 사용하십시오. 필요한 경우 NSDateFormatter로 서식을 지정하십시오.

+0

그리고 내가 사용하는 경우 .. NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat : @ "yyyy-MM-dd hh : mm : ss"]; NSString * theDate = [dateFormatter stringFromDate : [NSDate date]]; NSLog (@ "날짜 % @", theDate); 이 시간대를 지정하지 않았더라도 적절한 값 (현재 시스템 시간)을 제공합니다. –

+2

이렇게하면 NSDateFormatter가 암시 적으로 현재 시간대와 로케일을 선택합니다. 당신이 뭔가 다른 것을 원하면 명시 적으로 그러한 것들을 설정할 수 있습니다. –

+0

Ok ... 그러면 시스템 날짜가 포함 된 nsdate 객체를 어떻게 얻을 수 있습니까? –