Dee*_*kad 1 objective-c nsdate ios
我有两个日期StartDate和EndDate.我想在这两个日期之间找到特定的日子,例如星期一.
如何在两个日期之间执行循环?
Dav*_*ist 10
这个问题实际上有两个部分:
你可以NSCalendar用来获得星期一.在下面的代码中,我使用当前日历并将一周的第一天更改为星期一,然后将日期设置为"一周的开始".这是我从这个答案中汲取的一个技巧.
NSDate *loopDate = // the start date you are looping from
NSCalendar *currentCalendar = [NSCalendar currentCalendar];
currentCalendar.firstWeekday = 2; // Monday
[currentCalendar rangeOfUnit:NSWeekCalendarUnit startDate:&loopDate interval:NULL forDate:loopDate];
Run Code Online (Sandbox Code Playgroud)
当我现在运行它(我的循环日期是3个月前)时,它会Friday, May 17, 2013 at 5:57:26 PM GMT+2变为Monday, May 13, 2013 at 12:00:00 AM GMT+2(这是之前的星期一).
这很简单.创建"一周"的日期组件,并将其添加到日期,只要它小于结束日期即可.
NSDateComponents *oneWeek = [NSDateComponents new];
oneWeek.week = 1;
while ([loopDate compare:endDate] == NSOrderedAscending) {
loopDate = [currentCalendar dateByAddingComponents:oneWeek toDate:loopDate options:0];
// Do something with the date
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码并记录我得到的日期时:
Monday, May 20, 2013 at 12:00:00 AM GMT+2
Monday, May 27, 2013 at 12:00:00 AM GMT+2
Monday, June 3, 2013 at 12:00:00 AM GMT+2
Monday, June 10, 2013 at 12:00:00 AM GMT+2
Monday, June 17, 2013 at 12:00:00 AM GMT+2
Monday, June 24, 2013 at 12:00:00 AM GMT+2
Monday, July 1, 2013 at 12:00:00 AM GMT+2
Monday, July 8, 2013 at 12:00:00 AM GMT+2
Monday, July 15, 2013 at 12:00:00 AM GMT+2
Monday, July 22, 2013 at 12:00:00 AM GMT+2
Monday, July 29, 2013 at 12:00:00 AM GMT+2
Monday, August 5, 2013 at 12:00:00 AM GMT+2
Monday, August 12, 2013 at 12:00:00 AM GMT+2
Monday, August 19, 2013 at 12:00:00 AM GMT+2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |