0

我有以下问题:我需要在特定日期之后的每个工作日创建一个 NSMutabeArray。

这应该看起来像:

  • 2010 年 10 月 28 日星期四
  • 2010 年 10 月 4 日星期四
  • 2010 年 10 月 11 日星期四
  • ...

我怎样才能做到这一点?我认为这与 NSCalendar 有关,但我找不到正确的解决方案......你能帮帮我吗?

先感谢您

弗伦茨

4

2 回答 2

0

有实际日期:

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

添加一周:

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

然后你可以迭代并创建你的数组:

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];
于 2010-10-28T14:45:34.350 回答
0

那是一个无限的系列;NSMutableArray 只能保存一个有限集合。

无论如何,您只需要该系列的一个成员,例如 2010-10-28。要获得之后的星期四,请添加一周。要获得系列中的第三个日期,请将第二个日期添加一周,或将第一个日期添加两周。拥有该系列的任何成员都可以让您访问该系列的任何其他成员。

如果您从一个不是正确工作日的日期开始,请获取该日期的日期组件,将正确的工作日与其拥有的工作日之间的差异添加到该月的某一天,并将修改后的日期组件转换回一个约会。然后,该日期将在同一周的所需工作日。

于 2010-10-28T15:18:42.097 回答