2012-10-01 3 views
6

NSDateFormatter에 문제가 있습니다. 그것은 특정 날짜에 null를 반환합니다.특정 날짜에 NSDateFormatter가 null을 반환합니다.

나는이 기능은 사건을 디버깅 할 않았다

- (void) debugTest:(NSString *)dateStr{ 

    NSLog(@"String: %@", dateStr); 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *dateObj = [df dateFromString: dateStr]; 

    NSLog(@"Date: %@", dateObj); 

} 

이 일부 날짜에 대한 내 로그 출력은 다음과 같습니다

String: 2012-10-18 
Date: 2012-10-18 03:00:00 +0000 
String: 2012-10-19 
Date: 2012-10-19 03:00:00 +0000 
String: 2012-10-20 
Date: 2012-10-20 03:00:00 +0000 
String: 2012-10-21 
Date: (null) 
String: 2012-10-22 
Date: 2012-10-22 02:00:00 +0000 
String: 2012-10-23 
Date: 2012-10-23 02:00:00 +0000 

이 왜 날짜 만 2012-10-21에 null을 반환?

나는 2011-10-01 to 2014-11-01에서 간격으로 다른 테스트를했고, 다음 날짜 null 반환

2011-10-16, 2012-10-21, 2013-10-20, 2014-10-19 

이 버그의 어떤 종류가 있습니까? 내가 뭔가 잘못하고 있는거야?

내 날짜 포맷 [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];[df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];에 추가 :

+0

관련 항목? http://stackoverflow.com/a/4265130/343955 – adarshr

+0

나는 다른 질문의 해결책을 시도했지만 나를 위해 일하지 않았다. 나는 그 문제가 다르다고 생각한다. – Rafael

+0

코드가 정상적으로 작동합니다. 그것은 목록 밖에있는 것입니다. 문자열이 범위를 벗어 났을 것으로 예상됩니다. 나머지 테스트 코드를 게시하십시오. – madmik3

답변

4

나는 내 자신의 질문 단지 같은 문제를 얻을 수있는 사람의 경우에는 등록을 응답 할 것이다.

그래서, 내 새로운 코드는 다음과 같습니다

- (void) debugTest:(NSString *)dateStr{ 

    NSLog(@"String: %@", dateStr); 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
    [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    [df setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *dateObj = [df dateFromString: dateStr]; 

    NSLog(@"Date: %@", dateObj); 

} 

나는 두 가지 속성이 문제를 해결 설정 문제가 장치의 구성과 관련된되었다 생각합니다.

+0

그것은 나를 위해 작동하지 않았다. 나는 아직도 부분적인 결과를 얻고있다. 일부 Null 값과 일부 날짜 문자열. 어떻게 작동하게 만들었습니까? – AJ112

+0

나는 정확히 내가 게시하고 일한 것을했다. 그러나 나는 오래 전에 이것을 했으므로 가장 최근의 iOS 버전에서 이것이 여전히 작동하는지, 아마도 뭔가 바뀌 었는지는 모른다. – Rafael

관련 문제