2013-10-30 6 views
0

시간, 분, 초도 인쇄하지 않고 NSLog를 통해 NSDate 개체를 인쇄 할 수 있습니까? 내가 기록하고자하는 것은시, 분, 초가없는이 형식 yyyy-MM-dd입니다.형식으로 NSLog를 통해 날짜 인쇄

이미 NSDateFormatter에 yyyy-MM-dd가 있지만 NSLog를 통해 NSDate 개체를 인쇄 할 때 시간, 분, 초가 표시됩니다.

날짜 개체에서 다른 문자열을 만든 다음 해당 문자열을 기록하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

+1

NSDateFormatter를 사용하여 원하는 형식을 만들 수 있습니다. 요점은, 날짜를 문자열로 포맷해야한다는 것입니다. 단순히 NSDate 주위에 포맷터를 흔들어 놓지 않고 NSDate를 변경해야합니다. –

+0

의견을 주셔서 감사합니다. NSDateFormatter를 통해 NSDate를 yyyy-MM-dd 형식으로 이미 포맷했습니다. 하지만 NSLog 객체를 NSLog 객체로 만들면 – aresz

+2

NSDateFormatter는 기존 NSDate 객체를 수정하지 못하고 새로운 NSDate 객체를 생성하지 않습니다. NSDate에서 원하는 형식의 NSString을 생성 할 수 있습니다. 그래서 네, 콘솔에 출력 할 때마다 포맷팅을하거나, 날짜가 변하지 않는다면 NSString을 유지해야합니다. –

답변

1

nsdate를 서브 클래스 화하고 설명 메소드를 대체하여 형식화 된 문자열을 리턴 할 수 있습니다. 또는 동일한 작업을 수행 할 카테고리를 작성하고 로그 명령문에서 category 메소드를 호출하십시오.

+1

그래도, 이와 관련하여 어떤 일이라도하고 싶다면, 카테고리는 갈 길이 될 것입니다. –

+0

범주를 사용하는 메서드를 재정의하는 것은 좋지 않습니다. http://stackoverflow.com/questions/5272451/overriding-methods-using-categories-in-objective-c – ianyh

+0

을 참조하십시오. 의미하는 것은 아닙니다. 단지 그가 원하는 것을 수행하는 다른 방법을 추가하는 것입니다. – pickwick

1

NSLog이 (%@ 토큰을 통해) objective-c 개체를 발견하면 -[NSObject description] 메서드를 호출하고 결과 문자열을 그 자리에 인쇄합니다. 그 방법의 NSDate의 구현은시, 분, 초를 출력합니다. 다르게 인쇄하는 유일한 방법은 NSDateFormatter을 사용하여 직접 문자열을 생성하는 것입니다.

+0

나는 본다. 그건 의미가 있습니다. 그래서 내 자신의 문자열을 만들지 않으면이 작업을 수행 할 수있는 다른 방법이 없습니다. – aresz