2012-01-13 3 views
-1

문자열에서 날짜의 서식을 지정하려고합니다. 나는 이렇게 할 수있다 :NSDate 비정상적인 동작 지정

NSString *str = @"Fri, 13 Jan 2012 12:25:49 +0000"; 
NSLog(@"String: %@", str); 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"]; 
NSDate *datefrom = [df dateFromString:str]; 
NSLog(@"NSDate: %@", datefrom); 
[df setDateFormat:@"dd/MM/yyyy"]; 
str = [df stringFromDate:datefrom]; 
NSLog(@"Formated String: %@", str); 

그러나 나는 다른 날짜를 형식화 할 수 있기를 원하기 때문에 쓸모가 없다. 나는이 작업을 수행 할 때 그래서 :

NSString *str = [[stories objectAtIndex:0] objectForKey:@"date"]; 
NSLog(@"String: %@", str); 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"eee, dd MMM yyyy HH:mm:ss ZZZZ"]; 
NSDate *datefrom = [df dateFromString:str]; 
NSLog(@"NSDate: %@", datefrom); 
[df setDateFormat:@"dd/MM/yyyy"]; 
str = [df stringFromDate:datefrom]; 
NSLog(@"String Formatada: %@", str); 

그것은 단순히 작동하지 않습니다. 나는 [[stories objectAtIndex : 0] objectForKey : @ "date"]에 대한 결과를 확인했으며 정확히 같은 문자열을 @ "Fri, 13 Jan 2012 12:25:49 +0000"

비교했습니다. 내가 그들을 잘못 읽지 않았는지 확인해. 저는 여기에 비교하는 데 사용되는 코드입니다 :

if ([[[stories objectAtIndex:0] objectForKey:@"date"] isEqualToString:@"Fri, 13 Jan 2012 12:25:49 +0000"]) { 
    NSLog(@"They are the same"); 
} 
else NSLog(@"They are NOT the same"); 

하지만 난 항상 "그들은 동일하지 않습니다"얻을 수 있기 때문에 동일하지 않는 것 그들이 시각적으로 정확히 같은 있는데도 출력, 등. 어떤 생각?

+1

당신이 실제로 무엇을 NSLog 문에서 얻고있는 값 무슨 말을하십시오. NSDate 개체를 인쇄하고 서식을 지정할 것으로 예상됩니다. NSDateFormatter는 형식화 된 문자열을 생성 (또는 읽습니다.)하지만 NSDate의 'decription'형식 (NSDate를 직접 기록 할 때 얻는 것이며 진단 덤프 전용입니다)은 변경되지 않습니다. –

+0

NSCFString –

+0

당신은'NSLog (@ "Class : % @", [[[storyArtIndex : 0] objectForKey : @ "date"] class]); 위의 진술 중 어느 부분을 기록 했는가 ??? (요소 "date"가 설정되어있는 곳은 절대 표시하지 않으며 NSDate를 추출하는 소스로 해당 요소의 값을 사용하지만 날짜 형식을 지정하면 결과를 표시하지 않습니다.) –

답변

0

[[stories objectAtIndex : 0] objectForKey : @ "date"]에 의해 반환 된 객체가 NSString 객체가 아니라 NSString 객체입니까? 로그 할 때 동일하게 보일 수 있으므로 로깅을 통해 수행 할 수있는 유형을 확인하는 것이 유일한 방법입니다.

NSLog (@ "% @", NSStringFromClass ([str class]));

+0

제안한 코드의 출력은 다음과 같습니다. __NSCFString –

0

동일하지 않은 경우 dateFormatter가 아닌 문자열이 문제입니다.

무슨이에 NSLog() :

NSString *str = [[stories objectAtIndex:0] objectForKey:@"date"]; 
NSLog(@"String: %@", str); 
+0

문제는 문자열 끝에있는 3 개의 공백입니다. 그렇기 때문에 그들은 컴퓨터와 다르지만 나에게는 그렇지 않았습니다. 이제 작동 중입니다! –

관련 문제