2012-06-13 3 views
-1

현재 NSDate에서 연도를 계산하고 싶습니다. 내 현재 날짜를 14-06-2012으로 가정하면 연말 이후 마지막 날짜는 어떻게됩니까? (간단한 방식으로 내가 날짜를 가지고 있다면 01-01-2012 그 다음에는 31-12-2012이 될 것입니다. 그럼, 어떻게 올해 양식 현재 날짜를 계산합니까. 내 프로젝트에 대한 기대 다음과 같은 출력 :계산 연도 현재 NSDate에서

  1. 다음 또는 최종 연도 날짜 곳 연말 (같이가 31-12-2012).
  2. 다음 또는 연말 월 (지난 달).
  3. 다음 또는 끝 연도 (마지막 날짜 연도 또는 다음 연도).

NSDate 형식이어야합니다. 당신이 내 요점을 이해할 수 있기를 바랍니다.

+0

당신은 당신의 질문을 바꿔 주 시겠어요? 지금은 이해하기가 어렵습니다. 특정 연도 마지막 날의 날짜를 검색 하시겠습니까 (예 : 입력일 : 14-06-2012 결과 31-12-2012)? – Tim

+0

좋아요. 내가 분명히하자. 오늘 날짜가 13-06-2012 일 경우 오늘 날짜로부터 1 년이 지난 후 마지막 날짜는 무엇입니까? – iMash

+0

"마지막 날짜"는 여전히 분명하지 않습니다. 입력 된 연도 다음 연도의 날짜를 의미합니까? 따라서 입력 값이 14-06-2012 인 경우 출력은 31-12-2013이어야합니다. – Tim

답변

0

이를 사용할 수 있습니다

NSDate *now = [NSDate date]; 
NSDateComponents *dc = [[NSDateComponents alloc] init]; 
[dc setYear:1]; 
NSDate *targetDateObject = [[NSCalendar currentCalendar] dateByAddingComponents:dc toDate:now options:0]; 
[dc release]; 
+0

이 MyTargetDateObject는 무엇입니까? NSDate 인스턴스입니까? – iMash

+0

예 NSDate 인스턴스입니다. –

+0

OP의 요청이 이루어지지 않는다고 생각합니다. 나는 그가 날짜가 주어진 연도의 마지막 날짜를 찾으려고하지만, 당신의 코드는 단순히 추가 된 연도와 같은 날짜를 반환 할 것이라고 믿는다. – FreeAsInBeer

3
NSDate *today = [NSDate date]; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *comps = [gregorian components:(NSYearCalendarUnit) fromDate:today]; 

[comps setDay:31]; // last day of year is always the same 
[comps setMonth:12]; 

NSInteger year = [comps year]; // the current year 
NSDate *lastDayOfYear = [gregorian dateFromComponents:comps]; // the last day of the year