2013-10-02 5 views
1

안녕하세요, Picker를 설정하는 데 사용하고있는 NSDate를 만들고 있지만 Picker 날짜를 NSLog로 출력하면 실제 선택기에 표시된 시간 뒤에 항상 1 시간 남았습니다.NSDate는 이제 ios 에뮬레이터에서 1 시간입니다.

또한 테스트 결과로 다음과 같은 코드가 나타났습니다. NSDate * now = [NSDate date]; // 내 에뮬레이터에서 현재 날짜와 시간을 알려 주어야합니다. NSLog (@ "날짜와 시간 now : % @", now);

NSLog 값은 내 에뮬레이터에 표시된 시간보다 항상 1 시간 늦습니다.

내 질문은 왜입니까?

UPDATE : 사전에

감사 ------------------------------------ --------------------------------------------

했어. 몇 가지 더 많은 테스트와 NSDregate가 NSGregorian Calendar를 사용하여 올바른 시간을 리턴하고 나면 currentCalendar를 사용하는 NSDate가 1 시간 씩 사라 졌음이 밝혀졌습니다.

내 새로운 질문은 왜 그런가요? 내 에뮬레이터의 설정을 확인했으며 장치의 태양력이 그레고리력으로 설정되어 있습니다. 이것이 시간대 차이 때문일 수 있습니까? 그러면 사용자 장치와 동일한 시간대를 사용하도록 피커를 설정하는 방법이 있습니까?

덕분에

+0

다음 + (id) dateWithNaturalLanguageString : (NSString *) 문자열 로캘 : (id) localeDictionary를 사용하여 날짜를 인쇄 해보고 [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]을 localeDictionary로 사용하십시오. –

+0

안녕하세요 벤, 귀하의 의견을 주셔서 감사하지만, 당신의 코멘트를 주셔서 감사합니다. - 선택자 'dateWithNaturalLanguageString에 대한 알려진 클래스 메서드가 없습니다 :' –

답변

2

나는 당신의 시뮬레이터 시간이 시간대 (EN)을 기본값으로 설정되어 있기 때문에 생각합니다. NSDate는 항상 현지 시간으로 설정됩니다. 귀하의 장치에서 그것을 시도하면 올바른 것입니다.

내가 내 프로젝트에이 코드를 가지고 잘 작동 :

NSDate*now = [NSDate date]; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"dd.MM.yyyy"]; 

내가 날짜를 만들어 내 CoreData에 저장합니다. 항상 그 시간은 나의 실제 시간입니다.

어쨌든 새로운 iPhone을 보내 주셔서 감사합니다. 큰 Apple 가족을 환영합니다! :)

+0

안녕하세요 Mayo323, 귀하의 의견에 감사드립니다 그리고 당신은 바로 NSDate 올바른 시간을 반환합니다. 몇 가지 더 많은 테스트를 수행했고 NSDregate가 NSGregorian Calendar를 사용하여 정확한 시간을 반환하고 NSDate를 사용하여 currentCalendar를 사용한 결과 1 시간이 경과했음을 알 수 있습니다. 그래서 내 새로운 질문이 그 이유야? 내 에뮬레이터의 설정을 확인했으며 장치의 태양력이 그레고리력으로 설정되어 있습니다. 내 선택기가 내 에뮬레이터/장치와 동일한 표준 시간대를 유지하도록하려면 어떻게해야합니까? –

+0

에뮬레이터는 항상 -1 시간입니다. 장치의 로컬 시간대에서 시간이 표시됩니다. – Mayo323

+0

웃지 마라.하지만 아직 내 앱을 테스트 할 아이폰이 없다. 나는 곧 하나를 얻을 것이다. 도움을 주셔서 감사 드리며 정답을 정확하게 표시해 주시기 바랍니다. :) –