Pregunta

He siguiente problema:. Necesito crear un NSMutabeArray con cada día de la semana después de una fecha específica

Esto debe verse como:

  • jueves 28 octubre de 2010
  • jueves 04 octubre de 2010
  • jueves 11 octubre de 2010
  • ...

¿Cómo puedo hacer eso? Creo que tiene algo que ver con NSCalendar, pero no puedo encontrar la solución correcta ... ¿Me podría ayudar?

Gracias de antemano

FFraenz

¿Fue útil?

Solución

Esto es una serie infinita; un NSMutableArray sólo puede contener una colección finita.

En cualquier caso, sólo se necesita un único miembro de la serie, como el 2010-10-28. Para obtener el jueves, después de eso, añadir una semana. Para obtener la tercera fecha de la serie, añadir a la semana para la segunda fecha, o dos semanas para la primera cita. Tener cualquier miembro de la serie le proporciona acceso a cualquier otro miembro de la serie.

Si usted está comenzando a partir de una fecha que no es el día de la semana correcto, obtener los componentes de la fecha para esa fecha, añadir la diferencia entre el día de la semana correcto y el día de la semana tiene a su día del mes, y convertir la fecha modificada componentes a una fecha. Esa fecha será entonces en el día de la semana deseado en la misma semana.

Otros consejos

Para tener fecha real:

NSDate *today = [[NSDate alloc] init];

Para añadir una semana:

NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];

A continuación, puede repetir y crear su matriz:

NSMutableArray* dates = [[NSMutableArray alloc] init];
NSDate *date= [[NSDate alloc] init];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setWeek:1];

for (int i=0;i<10;i++) {
  NSDate *nextDate = [gregorian dateByAddingComponents:offsetComponents toDate:date options:0];
  [dates addObject:date];
  [date release];
  date = nextDate;
}
[date release];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top