2009-06-19 5 views
1

내 iPhone 앱에서 CURRENT_TIMESTAMP 기본값을 사용하는 날짜가 포함 된 sqlite 데이터베이스에 일부 데이터를 삽입합니다. 모든 것은 시간이 그것이 있어야하는 시간보다 1 시간 늦었다는 사실을 제외하고는 위대한 것입니다. 그리고 그것은 장치와 시뮬레이터에서 발생합니다. sqlite 설정 (현재 시간과 같은) 어딘가에 액세스 할 수 있습니까?iPhone에서 SQLite 타임 스탬프에 잘못된 시간이 있습니다

당신은 내가 그것을 위해 사용하고있는 코드를보고 싶다면 당신은이 게시물에 대한 내 대답은 한 번 봐 걸릴 수 있습니다 SQLite는 사이의 일 라이트 절약 시간대 불일치가있을 수 있습니다 것처럼 sqlite datetime data type with iphone NSdate?

+0

일광 절약 문제와 같은 소리 – teabot

답변

2

그것은 소리를 NSDateFormatter가 사용하고있는 시간대. 그것 looks as though SQLite stores the datetime in GMT. 따라서 NSDateFormatter도 GMT로 설정되어 있는지 확인해야합니다. 당신이있는 NSDate 인스턴스를 일단 당신이 예를 들어 설정되어 NSDateFormatter 인스턴스를 사용하여 올바른 현지 시간을 보여주는 그것의 문자열 버전을 얻을 수 있다는 기대

gmtFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[gmtFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"] 

: 당신이 할 수있는 것처럼 나타납니다 로컬/시스템 시간대.

참고 : 나는 이것을 실제로 시도하지 않았습니다.

+0

나는 이것을 시도하고 차이를 만들지 않습니다. 또한 친척이어야하므로 GMT + 1로 설정하고 누군가 중국에서 게임을하는 경우 잘못된 타임 스탬프를 얻고 싶지 않습니다. – Dimitris

+0

GMT + 1로 설정하는 것이 좋습니다. SQLite의 모든 타임 스탬프는 GMT로 고정되어 있으므로 사용자가 설명하는 NSDateFormatter도 동일한 시간대 (GMT)로 동기화되어야합니다. 포맷터에서 파생 된 NSDate는 시간대에 독립적이어서 다른 표준 시간대 (GMT + 1 또는 Beijing)로 변환 할 수 있어야합니다. – teabot

0

O/S 3.0에서 현재 사용할 수있는 코어 데이터를 사용하는 것이 좋습니다. 시간대 등을 지정하지 않아도 자동으로 이와 같은 작업을 처리합니다. 사용자의 기본값을 사용하고 모든 것을 일관되게 유지합니다.

다른 많은 장점이 있지만 관련성이있는 것 같습니다.

+0

팁 주셔서 고마워요,하지만 애플 리케이션이 이미 만들어 졌기 때문에 나는 그것을 바꿀 수 없었습니다.내 다음 번에는이 점을 기억해 두겠습니다 :) – Dimitris

-1

글쎄,이 1 시간 차이가 어디에서 왔는지 찾을 수 없기 때문에 다음 방법을 사용하여 날짜를 수정했습니다. 그것은 적절한 해결책이 아니지만 그것이 내가 필요한 것을 정확하게합니다. 따라서이 정확하고, 단지 날짜에 한 시간 지연을 추가

NSDate *date = [[NSDate alloc] initWithTimeInterval:3600 sinceDate:[formatter dateFromString:score.datetime]]; 

: 경우에 다른 사람이 저와 같은 문제로 실행 그래서 .. 여기 내 수정합니다.

+0

이것은이 문제를 해결하는 올바른 방법이 아니며 사용자가 다른 시간대에있을 때 문제가 발생할 수 있습니다. – Darren

0

teabot의 제안을 잘 구현 한 것 같습니다. 문제는 한 시간대에 겨울이 있고 한 개가 나올 때 발생합니다 ...

+0

그때 그의 제안을 시도한 것을 기억합니다. 그러나 작동하지 않았습니다 ... 사람들이 찻 주전자의 방법이 작동한다는 데 동의하면 다른 사람들을 돕기 위해 그의 대답을 올바르게 받아 들일 것입니다. 나는 또한 시간을 얻을 때 다시 그것을 구현하기 위해 노력할 것입니다. – Dimitris

0

나는이 문제도 해결해야하고 주전자의 대답은 정확한 것입니다. sqlite로 만든 타임 스탬프는 GMT로되어 있으므로 데이터베이스에서 읽을 때 GMT 형식으로 읽을 수도 있습니다. 결과 NSDate는 당신이 속한 시간대에 상관없이 정확한 날짜가됩니다. 1 시간을 추가하여 문제를 해결했다고 말하면 결국 실패하게됩니다. GMT 시간대에서 앱을 사용하는 모든 사용자는 +1 시간마다 표시됩니다. 다른 시간대의 사용자는 완전히 다른 시간 오프셋을 보게됩니다. (나는 이것이 오래되었음을 알고 있지만 방금 도움이되었습니다.)

관련 문제