我的日期选择策略的另一双眼睛?
Posted
技术标签:
【中文标题】我的日期选择策略的另一双眼睛?【英文标题】:Another pair of eyes for my date picking strategy? 【发布时间】:2014-07-22 14:12:26 【问题描述】:我想对给定一周的日期进行分组,开始日期是用户在他们的偏好中选择的日期。 例如,我的偏好可能是我的工作周从星期五开始,所以星期五到星期四应该是我的一周。 星期天星期六。周一至周日等
所以我想向用户展示一个日期选择器,虽然他们可以选择任何日历日,但我希望收集 日期从开始日开始。
例如,如果我选择下个月的一个随机星期三,并且我的偏好是星期一的开始工作周,那么我的日期集合 应该从星期一开始。代码必须能够向后走 2 天,找到那个星期一,然后向前走直到星期日。
我的策略就是这样做 - 向后循环直到找到开始日期,然后简单地添加 6 天以在星期六结束。
在我这样做之前,有没有更好的方法(或者可能是 ios 中的某种细节让我比其他地方更容易)?
【问题讨论】:
【参考方案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 周初:2014-07-17 04:00:00 +0000
【讨论】:
非常感谢我很高兴我问了!您如何看待上面的另一个答案是它与您的想法一致,还是 setFirstWeekday 是一个不同的解决方案?【参考方案2】:你看过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];
【讨论】:
谢谢 - 所以在这种情况下,应该是星期六 - “pickedDate”?以上是关于我的日期选择策略的另一双眼睛?的主要内容,如果未能解决你的问题,请参考以下文章
当用户在 MS Access 中修改表中的另一列时,如何在 SQL Server 中将列设置为今天的日期 [关闭]
转换为 ISO 字符串后返回日期/时间而不切片的另一种方法?