2012-05-31 6 views
2

누군가가 문자열을 날짜로 변환 할 때 왜 null 값을 얻는 지 설명 할 수 있습니다. 그것은 모두 똑바로 보인다. 그러나 나는 명백하게 여기에서 무엇인가 놓치고있다.NSDateFormatter produceing (null) SQLite 및 iOS 5.1

일부 배경 :

이 아이 패드 응용 프로그램은 다른 나라에서 사용되며 나는 90 일 마지막 로그인 사용자 경과 한 경우 확인하기 위해 날짜 계산을 수행해야합니다

I를

. TEXT로 설정 DateLastIn 필드 SQLite 데이터베이스를

내 개체 내가 같은 NSDateFormatter를 설정 내 기록 객체를 채울 경우있는 NSDate

로 설정 DateLastIn 속성이 있습니다 ..

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; // SQLite default date format 

그런 다음 DateLastIn (SQLite 용 FMDB 래퍼 사용)을 읽었습니다.

 // test SQLite as String 
     NSString *testDate = [results stringForColumn:@"DateLastIn"]; 
     NSLog(@"DateLastIn straight from DB (string) shows %@", testDate); 

결과 : DateLastIn 바로 DB (문자열)에서 2012-04-23 18시 20분 51초

모든 지금까지 잘 보여줍니다. 다음으로는있는 NSDate 객체 예를 들어,이 변환 테스트하라

 NSDate *aDate = [[NSDate alloc] init]; 
     aDate = [formatter dateFromString:testDate]; 
     NSLog(@"Using formmater on string date results in: %@", aDate); 

결과 :에 문자열 날짜 결과에 formmater 사용 : (널) 내가 SQLite는에서 DATETIME을 시도

, 나는있는 NSString를 사용하여 시도했다 NSDate 대신에 내 객체에 서클에서 돌아 다니는 것처럼 보입니다.

도움을 주시면 감사하겠습니다.

답변

4

NSDateFormatterformat patterns from the Unicode Technical Standard #35을 사용합니다.

시간 형식의 경우 HH (시간 [0-23])이 아니라 hh (시간 [1-12])이 필요합니다.

+0

오 와우, 나는 그것을 발견하지 못했지만, 훨씬 더 불길한 것을 찾고 있었다. 고마워, 고마워. – GeoffCoope

2

날짜 형식을 HH가 아닌 hh로 변경했습니다. 여기에 내 테스트 코드가있다. ...

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // SQLite default date format 


// test SQLite as String 
NSString *testDate = @"2012-04-23 18:20:51"; 



NSDate *aDate = [formatter dateFromString:testDate]; 

NSLog(@"Using formmater on string date results in: %@", aDate); 
+0

감사합니다. 당신과 다니엘 모두에게 많은 감사를드립니다. – GeoffCoope