2013-04-26 2 views
0

SQL 데이터베이스가있는 서버에 의존하는 응용 프로그램을 만들고 있습니다. 나는 데이터를 얻고 echo 다시 JSON과 같은 응용 프로그램에 다시이야 PHP 파일 내 서버에 URL을NSDateFormatter가 24 시간 혼란에 빠졌습니다

2013-04-26 22:56:05  

: 데이터베이스가 자동으로 같이 타임 스탬프를 저장합니다. NSDATE: 2013-04-27 04:56:05 +0000 : timestamp = "2013-04-26 22:56:05";

NSString *timestamp = [mArray[1] objectForKey:@"timestamp"]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"EDT"]]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSDate *date = [formatter dateFromString:timestamp]; 
NSLog(@"NSDATE: %@", date); 

그리고 그것은으로 나온다 - 앱이 데이터를 가져 오면

는, 타임 스탬프는 동일 아직도있다. 분명히 같은 것은 아닙니다.

내 서버는 노스 버지니아 주 (EDT)의 Linux 박스이며 MDT에 있습니다.

+1

가능한 중복 [NSDate 및 NSDateFormatter magic] (http://stackoverflow.com/questions/8135147/nsdate-and-nsdateformatter-magic) – rmaddy

+3

사실, 나는 당신의 문제를 잘못 읽은 것 같습니다. 설정 앱에서 24 시간 설정에 대해 이야기하고 있다고 생각했습니다. 'NSDate'를 로깅하면 날짜는 항상 UTC 시간으로 표시됩니다. 두 날짜는 같습니다. 이 MDT 시간은 UTC -6 시간입니다. 그래서 22:56 MDT는 다음날 UTC 04:56입니다. 모두 예상대로입니다. EDT가 UTC -4이고 MDT가 아닌 EDT를 사용하는 것처럼 보이기 때문에 이것이 완벽하게 설명되지는 않지만. – rmaddy

답변

0

마지막으로 알아 냈습니다.

제 서버는 UTC 시간이었습니다! 나는

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"EDT"]]; 

를 변경 예상대로 지금은 작동합니다.