另一双眼睛为我的日期采摘策略?

时间:2014-07-22 14:12:27

标签: ios ios7 ios8

我想将给定周的日期分组,开始日期是用户在其偏好中选择的日期。 例如,我的偏好可能是我的工作周从星期五开始,所以星期五到星期四应该是我的星期。 星期天星期六。周一至周日等。

所以我想向用户提供一个日期选择器,虽然他们可以选择任何日历日,但我希望收集 约会从他们的开始日开始。

例如,如果我在下个星期三随机选择,而我的偏好是针对星期一的开始工作周,那么我的日期收集 应该从周一开始。代码必须能够向后走2天,找到星期一,然后向前走,直到星期天。

我的策略是做到这一点 - 向后循环直到找到开始日期,然后在星期六简单地添加6天结束。

在我这样做之前,有没有更好的方法(或者iOS中的某些细节可以让我比其他地方更容易)?

2 个答案:

答案 0 :(得分:1)

检查NSCalendar班级。特别是方法:setFirstWeekday:

示例代码:

NSDate *today = [NSDate date]; // Or a date of your choice
NSLog(@"today: %@", today);

NSCalendar *caledar = [NSCalendar currentCalendar];
[caledar setFirstWeekday:5]; // Sunday is 1
NSDate *beginningOfWeek;
[caledar rangeOfUnit:NSWeekCalendarUnit
           startDate:&beginningOfWeek
            interval:NULL
             forDate:today];
NSLog(@"beginningOfWeek: %@", beginningOfWeek);

NSLog输出:

  今天:2014-07-22 14:45:01 +0000
  beginningOfWeek:2014-07-17 04:00:00 +0000

答案 1 :(得分:0)

你看过NSDateComponents了吗?您可以指定一周中的特定日期。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *pickedDateComponents = [calendar components:NSCalendarUnitWeekday fromDate:pickedDate];
NSInteger saturday = 7; // In the Gregorian calendar, 1 is Sunday, 2 is Monday, etc..
NSDateComponents *daysUntilSaturdayComponents = [NSDateComponents new];
daysUntilSaturdayComponents.weekday = saturday - pickedDateComponents.weekday;
NSDate *saturdayAfterPickedDate = [calendar dateByAddingComponents:daysUntilSaturdayComponents toDate:pickedDate options:0];