2012-06-13 38 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 
相關問題