使用 NSCalendar 创建 NSMutableArray
-
27-09-2019 - |
题
我有以下问题:我需要在特定日期之后的每个工作日创建一个 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];
不隶属于 StackOverflow