2010-12-14 14 views
6

Tengo una aplicación de calendario en la que quiero obtener el próximo año a partir de la fecha actual (NSDate).Obtener el próximo año del NSDate actual?

¿Cómo puedo hacer esto?

+1

Simplemente obtenga el año a partir de la fecha actual y agregue uno. ¿Qué parte no sabes cómo hacer? – Gabe

Respuesta

19

Puede hacer NSDateComponents hacer todo el trabajo duro de calcular los años bisiestos y los segundos intercalares:

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]; 
5

Como se mencionó VdesmedT, puede utilizar dateByAddingTimeInterval y añadir los segundos de un año. Pero para ser más precisos, puede hacer lo siguiente:

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];

Espero que esto ayude.

1

Esta es mi versión: in swift.

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