0

我正在根据日期生成图表。用户将选择开始日期和结束日期。

例如,如果开始日期是 3/10/13,结束日期是 15/10/13。我想按周对日期进行分组。

所以分组应该像 3/10/2013 - 5/10/13、6/10/13 - 12/10/13、13/10/13 - 15/10/13。

使用nsdatecomponents我可以找到两个日期之间的差异。

    NSDateComponents *componentsToSubtract  = [[NSCalendar currentCalendar] components:NSWeekCalendarUnit fromDate:stDate  toDate:endDate options:0];

但是如何按周对它们进行分组?

4

1 回答 1

1

我建议您选择一个开始日期,然后将其恰好加上 7 天,然后在第一周获取这些日期之间的所有内容,在日期中添加几天,然后在第二周获取这些日期之间的所有内容,依此类推。

如果您总是想从星期日(或可能是星期一)开始,请使用日期组件来选择星期日的日期:

NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:NSYearForWeekOfYearCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit fromDate:yourApproximateStartingDate];

[components setWeekday:1]; // 1 == Sunday
yourStartingDate = [calendar dateFromComponents:components];
NSTimeInterval sevenDays = 7 * 24 * 60 * 60;
NSDate *secondDate = [yourStartingDate dateByAddingTimeInterval:sevenDays];

然后您可以使用比较器查看哪些日期在该范围内。

于 2013-10-05T06:16:05.867 回答