使用EKRecurrenceRule计算上一个或下一个日期

时间:2015-07-21 05:02:16

标签: ios eventkit

我想从偏移NSDateEKRecurrenceRule计算上一个日期或下一个日期。有点像这样:

NSDate* prevDate = [Something computePreviousDateForOffsetDate: aDate 
                                            withRecurrenceRule: aRule];

NSDate* nextDate = [Something computeNextDateForOffsetDate: aDate
                                        withRecurrenceRule: aRule];

我可以使用简单的重复规则创建Something,但复杂的规则对我来说有点难度。我认为这是非常常见的事情,所以我问这个问题。

我是否需要花时间来实施自己的解决方案?

1 个答案:

答案 0 :(得分:1)

EKRecurrenceRule失去一些时间后,我找到了ios-rrule_parser的替代解决方案。它最容易使用,它涵盖了我的所有需求。

对于nextDate,请使用:

NSDate *startDate = [NSDate date];
NSDate *endDate = [startDate dateByAddingTimeInterval:100 *24 *60 *60];

Scheduler * scheduler = [[Scheduler alloc] initWithDate:startDate andRule:@"RRULE:FREQ=DAILY;COUNT=1;INTERVAL=2"];
NSArray *occurences = [scheduler occurencesBetween:startDate andDate:endDate];

NSDate *nextDate = [occurences objectAtIndex:0];

对于previousDate,只需更改startDate。