Iphone 从当前日期开始计算年份

Iphone 从当前日期开始计算年份,iphone,objective-c,nsdate,nscalendar,nsdatecomponents,Iphone,Objective C,Nsdate,Nscalendar,Nsdatecomponents,我想计算从当前日期算起的年份。假设我现在的日期是2012年6月14日,那么年底后的最后一个日期是什么。(简单地说,我可以向您解释,如果我有日期2012年1月1日,那么年底后我将得到2012年12月31日)。那么,如何从当前日期计算年份呢。 我希望我的项目有以下输出: 下一个或年末日期(如2012年12月31日) 下一个或年末月份(最后一个月) 下一年或年底(上一年或下一年) 它应该是NSDate格式。希望你能理解我的观点。你可以用这个: NSDate *now = [NSDate date];

我想计算从当前日期算起的年份。假设我现在的日期是2012年6月14日,那么年底后的最后一个日期是什么。(简单地说,我可以向您解释,如果我有日期2012年1月1日,那么年底后我将得到2012年12月31日)。那么,如何从当前日期计算年份呢。 我希望我的项目有以下输出:

  • 下一个或年末日期(如2012年12月31日)
  • 下一个或年末月份(最后一个月)
  • 下一年或年底(上一年或下一年)
  • 它应该是NSDate格式。希望你能理解我的观点。

    你可以用这个:

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

    这个MyTargetDateObject是什么。是NSDate实例吗?我认为这没有达到OP的要求。我相信他正试图在给定日期的情况下找到一年中的最后一个日期,但您的代码只会返回相同的日期,并添加一个年份。是的!这就是我在上面测试的代码所发生的事情,但它给出了明年的相同日期。正如我提到的,我想知道一年的最后一天。你能重新表述一下你的问题吗?现在很难理解。是否要检索给定年份最后一天的日期(例如,对于2012年6月14日的输入,您希望得到2012年12月31日的结果)?很好。让我澄清一下。如果今天的日期是2012年6月13日,那么从今天起一年后的最后日期是什么。“最后日期”我仍然不清楚。您是指输入的次年最后一天的日期吗?那么如果输入是2012年6月14日,输出应该是2013年12月31日?
    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