从目前的NSDate获得明年?

时间:2010-12-14 08:59:59

标签: ios cocoa-touch nsdate nsdateformatter

我有一个日历应用程序,我希望从当前日期(NSDate)获得下一年。

我该怎么做?

4 个答案:

答案 0 :(得分:19)

你可以让NSDateComponents完成计算闰年和闰秒的所有艰苦工作:

NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setYear:1];
NSDate *nextYear = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0];

答案 1 :(得分:5)

如VdesmedT所述,您可以使用dateByAddingTimeInterval并添加一年的秒数。但更确切地说,您可以执行以下操作:

NSDate *today = [NSDate date]; // get the current date
NSCalendar* cal = [NSCalendar currentCalendar]; // get current calender
NSDateComponents* dateOnlyToday = [cal components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit ) fromDate:today];
[dateOnlyToday setYear:([dateOnlyToday year] + 1)];
NSDate *nextYear = [cal dateFromComponents:dateOnlyToday];

希望这有帮助。

答案 2 :(得分:2)

这是我的版本:在swift中。

let calendar = NSCalendar.currentCalendar()
let newDate = calendar.dateByAddingUnit(.Year, value: 1, toDate: NSDate(), options: NSCalendarOptions.MatchNextTime)

答案 3 :(得分:2)

斯威夫特4:

R