2013-04-10 2 views
2

나는 전달하는이 날짜를 인식하도록 NSDateFormatter를 얻는 데 문제가 있습니다. 평일과 관련이 있다고 확신하지만, 알아낼 수 없습니다.왜 NSDateFormatter가이 날짜를 구문 분석하지 않습니까?

NSString *testDate = @"20130412 Friday"; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
df.dateFormat = @"yyyyMMdd cccc"; 
NSDate *result = [df dateFromString:testDate]; 
NSLog(@"test: %@, result: %@", testDate, result); 

이렇게하면 1999-12-30의 결과 날짜가 표시됩니다. 나는 평일에 eee와 EEEE를 시도했지만 도움이되지 않습니다. 평일을 삭제하면 작동하지만 내 날짜 형식이 잘못되었음을 설명하지는 않습니다.

+0

내게 제공합니다. 2013-04-10 17 : 07 : 27.163 메모리 [1409 : f803] 테스트 : 20130412 금요일, 결과 : 2013-04-12 06:00:00 +0000 – HalR

+0

그냥 추측 해 보았습니까? * 6 * C가 4 대신에 있습니까? – Undo

+0

6 cs는 아무런 차이가 없습니다. HalR이 다른 결과를 얻는 이상한 점 - Xcode 4.6을 사용하고 최신 ios SDK를 사용하여 구축하고 있습니다. 너도 그래? – Dan

답변

0

왜 평일인지 알 수 없습니다. 일치하지 않는 날짜의 가능성을 만듭니다. "20130412 Tuesday"에 대해 당신은 무엇을 기대합니까? (장래 독자를위한 주 : 20130412는 실제로 금요일이다) 나는 http://userguide.icu-project.org/formatparse/datetime를 점검했고, 요일 추가에 대한 어떤 금지도 발견 할 수 없었다. 그러나 그것은 나에게 나쁜 생각 인 것처럼 보인다.

그러나 NSDateFormatter가 올바르게 작동하지 않는 것 같습니다. 필자는 iOS 6.1 시뮬레이터와 OS X 10.8.3에서 테스트했으며 두 플랫폼에서 같은 결과를 얻었습니다. 난 구문 분석을 시도하는 YES (성공 구문 분석)을 반환, 아직 결과에 잘못된 답을 태우고 코드 아래

id longResult; 
NSError *error; 
NSRange range = NSMakeRange(0, testDate.length); 
if (![df getObjectValue:&longResult forString:testDate range:&range error:&error]) { 
    NSLog(@"error: %@ reason:%@", error.localizedDescription, error.localizedFailureReason); 
} 

NSLog(@"result: %@", longResult); 
NSLog(@"%@", NSStringFromRange(range)); 

를 추가하고

2013-04-10 16:45:27.921 date formatter fun ios[47350:c07] test: 20130412 Friday, result: 1999-12-31 07:00:00 +0000 
2013-04-10 16:45:27.922 date formatter fun ios[47350:c07] result: 1999-12-31 07:00:00 +0000 
2013-04-10 16:45:27.922 date formatter fun ios[47350:c07] {0, 15} 

을 생산, 조금 확대했다.

관련 문제