2011-08-18 4 views
1

가 좋아 내가이 요구하는 종류의 바보 같은 느낌이 작동하지 않는,하지만 어떤 생각이 왜 작동하지 않습니다 :NSDateFormatter

{ 
     NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"mmmm dd, yyyy"]; 

     NSDate *myDateFromString = [formatter dateFromString:creditDate.text]; 
     NSLog(@"%@", myDateFromString); 
     [self.credit setCertificationDate: myDateFromString]; 
    } 

그것은 "m"이 때문에 일치하지 않는 널

답변

3

형식 및 문자열을 반환 분 "M"은 월입니다. 만큼 당신이하지 않는

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
    [dateFormatter setLocale:usLocale]; 
    [usLocale release]; 

: 그래서 "2012년 8월 18일"나는 항상 명시 적으로 로케일을 설정하는 대신 당신은 unicode.org

에서 형식을 확인할 수 있습니다 "MMMM의 DD의 YYYY"를 가지고 해석 할 수없는 달 이름을 구문 분석하면 명시적인 형식 문자열을 제공하는 경우 실제 로케일이 en_US인지 여부는 중요하지 않습니다.

좀 더 힌트 :

  • 제공된 날짜가 잘못된 것을 배제하기 위해 테스트를 위해 하드 코딩 된 문자열을 사용합니다.
  • 오류가있는 부분을 분리하기 위해 숫자 또는 시간없이 포맷터 문자열을 쉽게 시험해보십시오.
  • 여전히 작동하지 않는 경우 NSDateFormatter의 getObjectValue : forString : range : error :를 사용하여 오류에 대한 자세한 정보를 얻을 수 있습니다.
+0

미안 작동하지 않았다 : – logixologist

+0

나는 당신에게 더욱 기괴한 null 값 – logixologist

+0

을 줄 것이다 .... 잘못된 가능성이 포맷을 할 수 : 때 하드 코딩이 같은 텍스트 날짜 :있는 NSDate * myDateFromString = [ 포맷터 dateFromString : @ "9/1/2013"]; NSLog (@ "% @", myDateFromString); 나는 아직도 null을 얻는다 – logixologist