2012-06-13 6 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, то какая будет последняя дата после завершения одного года с сегодняшнего дня. – 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 
Смежные вопросы