2012-06-29 4 views
0

사용자가 버튼을 선택할 때 정확한 시간과 날짜를 얻으려는 시도를하고, 선택을 취소하면 다시 시도합니다.CaCurrentMediaTime에서 날짜 및 문자열로 변환

지금까지 NSDate dateWithTimeIntervalSince1970을 사용해 왔습니다. 이것은 miliseconds (float)를 얻습니다. 이것은 NSDate로 변환하기 쉽고 문자열로 변환하기 쉽습니다. 그러나 나는 이것이 아이폰 4S에서 실시간으로 비교되는 최대 1 ~ 2 분의 차이로 절대 시간을 제공하지 않는다는 것을 알게되었다.

여기에 밀리 초 단위로 부동 소수점을 사용하는 이유는 NSNumber의 코어 데이터에 저장하여 나중에 쉽게 계산할 수 있도록 여러 가지 방법으로 전송하기 쉽기 때문입니다.

내가 여기 같은 CACurrentMediaTime의 사용을 제안에 게시물을 발견했습니다하지만 날짜와 해당 날짜의 문자열로 변환하는 개 실패되었습니다

double CurrentTime = CACurrentMediaTime(); 

있는 NSDate dateWithTimeIntervalSinceNow 권리를 부여 날짜는 시뮬레이터의 시계가 실제로 내 Mac에있는 것보다 약 35 ~ 45 분 앞선 것입니다.

현재 변환은 다음과 같이 진행됩니다

NSDate *conversion = [NSDate dateWithTimeIntervalSince1970:startTimeInMiliSeconds]; 
NSDateFormatter *formatter; 
NSString  *dateString; 
formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 
dateString = [formatter stringFromDate:conversion]; 

모든 아이디어/참조?

답변

0

핵심 데이터에 NSDate을 저장하고 전체 변환 프로세스를 생략하면 어떨까요? NSDate은 Core-Data 항목의 자연스러운 데이터 유형입니다.

+0

나는 그것에 대해 생각해 봤지만 지금은 어쨌든 이것에 의지해야만했습니다. 밀리 초의 수레는 약간의 버그가있었습니다. 나는주기적인 버튼을 사용하여 모든 엔트리를 주기적으로 증가시켜주기 때문에, 핵심 데이터가 작동하는지 쉽게 확인할 수 있었다. 그러나 매 사이클마다 두 번째로 시간을 다시 계산했습니다. 나는 float를 nsdate로 바 꾸었습니다. 핵심 데이터 코드를 변경하지 않아도 작동합니다. 엄청 이상해. 이제 남아있는 것은 nsdate의 표준 GMT를 사용자의 시간대를 따르는 것입니다. 이것이 받아 들여지는 길이므로 고마워요! – BossBols