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

这应该看起来像:

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

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

先感谢您

弗拉恩茨

有帮助吗?

解决方案

这是一个无穷级数;NSMutableArray 只能保存有限的集合。

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

如果您从不正确的工作日开始,请获取该日期的日期部分,将正确的工作日与该日期的工作日之间的差值添加到该月的日期,然后将修改后的日期部分转换回一个约会。该日期将在同一周的所需工作日。

其他提示

要获得实际日期:

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];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top