应用允许用户定义一组任意天,如下所示:
这一天可能只有一个条目,也可能有很多条目。假设这个周期从2010年3月23日开始。
是否有一种通用算法可以确定周期中哪一天与给定日历日相对应?
3月24日,算法应该返回第2天,3月25日应该是第3天,3月26日应该是第1天,依此类推......
更具体地说,我正在为Cocoa应用程序编写此代码。那么,除非有一种更通用的技术,日历课程能帮助我吗?
答案 0 :(得分:3)
NSCalendar *gregorian = ...;
NSDate *startDate = ...;
NSDate *currentDate = [NSDate date];
NSUInteger unitFlags = NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags fromDate:startDate toDate:currentDate options:0];
NSInteger days = [components day];
days
现在包含自开始日期以来经过的天数。这可以用作您的活动数组的索引(从零开始)。您可以使用模数运算符将循环的长度作为被除数,以便在第一次循环运行后计算指数。
答案 1 :(得分:1)
计算开始日期和当前日期的Julian date(或变体)(此部分留给读者练习)。然后,周期的当前日期为(currentDate - startDate) % lengthOfCycle + 1
。
答案 2 :(得分:0)
输入后我找到了答案,这很简单。
计算开始日期和当前日期之间的天数,然后将该数字取模为周期中的总天数,并获得当天。容易发脾气。