2011-10-18 3 views
1

NSString을 NSDate로 변환하고 다시 NSString 형식으로 변환하는 데 문제가 있습니다. codesnippet 내 아이폰 4NSString to NSDate는 iDevice에서 작동하지 않습니다.

NSString *pubDate = @"Tue, 18 Oct 2011 05:00:00 +0100"; 

NSDateFormatter *formater1 = [[NSDateFormatter alloc] init]; 
[formater1 setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]; 

NSDate *d = [formater1 dateFromString:pubDate]; 
NSLog(@"d: %@", d); 


NSDateFormatter *formater2 = [[NSDateFormatter alloc] init]; 
[formater2 setDateFormat:@"dd MMM yyyy"]; 

NSString *k = [formater2 stringFromDate:d]; 
NSLog(@"k: %@", k); 

[formater1 release]; 
[formater2 release]; 

을 시뮬레이터의 출력에 해당하는 경우에는 iOS 시뮬레이터에 문제가 있지만 나던 작업없이 작동하는 것입니다 :

d: 2011-10-18 04:00:00 +0000 
k: 18 Oct 2011 

장치의 출력은 다음과 같습니다

d: (null) 
k: (null) 

제안 사항이 있으십니까?

답변

2

당신은 날짜 포맷터에 로케일을 설정해야합니다. 그런 다음 로케일을 설정하지 않은 경우

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 

//... 
formater1.locale = locale; 

//... 
formater2.locale = locale; 

//... 
[locale release]; 

는 사용자의 설정은 그 반대의 경우도 마찬가지 24 시간 시계 또는로 변경 12 시간으로 사용자의 설정을 준수하기 위해 제공되는 문자열을 변경할 수 있습니다.

+1

thx hypercrypt. 내 하루를 만들었 어. – CarlJ

0

기기가 영어로 설정되어 있지 않아서 pubDat에있는 TueOct을 구문 분석 할 수 없기 때문일 수 있습니다. NSDateFormatter에 로케일을 추가

시도 :

[formater1 setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"EN"] autorelease]];