2012-11-27 3 views
0

"2012 12 12 12:12"와 같은 문자열이 하나 있는데, 날짜 형식을 지정하는 방법은 무엇입니까?문자열에서 datetime의 서식을 지정하는 방법

나는 이것을 시도하지만

-(NSDate *)stringToDate:(NSString *)date 
{ 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    NSTimeZone *timeZone = [NSTimeZone localTimeZone]; 

    [formatter setTimeZone:timeZone]; 
    [formatter setDateFormat : @"yyyy MM dd HH:mm"]; 

    NSString *stringTime = date; 

    NSDate *dateTime = [formatter dateFromString:stringTime]; 
    [formatter release]; 
    return dateTime; 
} 

업데이트 일 : 나는 포맷터의 위치를 ​​변경할 때, 그것은 또한으로 작동하지 않을 수 있습니다

NSLog(@"%@", stringToDate(@"2012 12 12 12:12")); 

그것은 "널 (null)"를 출력, 그러나 그것은 작동 "2012년 12월 12일 12시 12분"

+1

당신은 정말 포맷터의 위치를 ​​변경하면 –

+0

, 그것은 또한 – why

+0

를 작동 할 수 없습니다하지만 적어도 더 이상 정의되지 않은 동작을 호출 목표 - C의 메모리 관리 ...에 대한 재교육이 필요합니다. –

답변

3

변경과 같은 문자열 형식과

[formatter setDateFormat : @"yyyy MM dd HH:mm"]; 
[formatter release]; 
NSString *stringTime = date; 
NSDate *dateTime = [formatter dateFromString:stringTime]; 
당신이 지금까지 문자열로 변환에서의 사용으로 완료 될 때까지

[formatter setDateFormat : @"yyyy MM dd HH:mm"]; 
NSString *stringTime = date; 
NSDate *dateTime = [formatter dateFromString:stringTime]; 
[formatter release]; 

하려면 포맷을 해제하지 마십시오. 코드에서 변환하기 전에 코드를 릴리스합니다.

업데이트 :

당신은로 사용할 필요가

NSLog(@"%@", [self stringToDate:@"2012 12 12 12:12"]); 

당신은 목표 - C에서 stringToDate(@"2012 12 12 12:12")을 사용할 수 없습니다. 이에 상응하는 것은 [self stringToDate:@"2012 12 12 12:12"]입니다. 이

사용이 코드를 사용하기 전에

+0

@why,이 경우'[[guideElement attributeForName : @ "start"] stringValue]'가 "2012 12 12 12:12"를 반환하면 제대로 작동합니다. – iDev

+0

정말 고마워요! – why

1

당신은 NSDateFormatter 해제됩니다 -

-(NSDate *)stringToDate:(NSString *)date 
{ 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    NSTimeZone *timeZone = [NSTimeZone localTimeZone]; 

    [formatter setTimeZone:timeZone]; 
    [formatter setDateFormat : @"yyyy MM dd HH:mm"]; 

    NSString *stringTime = date; 

    NSDate *dateTime = [formatter dateFromString:stringTime]; 
    [formatter release]; 

    return dateTime; 
} 
2

당신은이를 사용할 수 있습니다 대신이 두 줄의

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 

을 :

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
... 
[formatter release]; 

ARC를 사용하면 메모리 관리에 문제가 없습니다.

편집 : 친절하게도 메모리 관리 규칙과 지침을 읽으십시오. 이것은 코코아에서 일하는 모든 사람들에게 필수적입니다.

관련 문제