如何确定两个NSDates何时相隔1周?

时间:2011-03-07 00:05:09

标签: objective-c ios nsdate foundation

我是我的应用程序我有一个NSMutableArray,每个条目都有一个带有几个Key-Value对的NSMutableDictionary。其中一对包含条目的日期。对于我的应用程序的其中一个功能,我需要确定哪些条目彼此相隔1周(即从星期日到星期日),并对该星期每一天的其中一个键值对求数。

我该怎么做呢?

注意:星期日到星期日,我的意思是整个星期天,而不是在晚上9点到星期日晚上9点说星期日。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

您可以按日期对条目进行排序(例如,按升序排序)。之后,您可以计算所有后续日期之间的天数差异,基本上为diff[n] = dayDiff(dates[n], dates[n-1])。因此,对于每个dates[n],您可以非常快地找到7天的日期 - 只需diffsn之和,直到您到达数组末尾(=>没有此类日期)或sum等于7(=>你发现它)或者sum大于7(=>没有这样的日期)。

不要试图使用毫秒或类似的东西来获得天数的差异。从某些参考点开始,日期远远超过毫秒。使用NSCalendar进行此操作

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *cs = [calendar components:NSDayCalendarUnit 
                                   fromDate:date1
                                     toDate:date2
                                    options:0];
NSInteger diffInDays = cs.days;

答案 2 :(得分:0)

看一下使用NSDateComponents。您可以将日期A和B都转换为它们的日期组件,然后检查7的差异。