我想将给定周的日期分组,开始日期是用户在其偏好中选择的日期。 例如,我的偏好可能是我的工作周从星期五开始,所以星期五到星期四应该是我的星期。 星期天星期六。周一至周日等。
所以我想向用户提供一个日期选择器,虽然他们可以选择任何日历日,但我希望收集 约会从他们的开始日开始。
例如,如果我在下个星期三随机选择,而我的偏好是针对星期一的开始工作周,那么我的日期收集 应该从周一开始。代码必须能够向后走2天,找到星期一,然后向前走,直到星期天。
我的策略是做到这一点 - 向后循环直到找到开始日期,然后在星期六简单地添加6天结束。
在我这样做之前,有没有更好的方法(或者iOS中的某些细节可以让我比其他地方更容易)?
答案 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];