我需要知道特定一周内出现的Notification
。我知道NSDate
,weekOfMonth
和month
。
例如,如果我的year
为0且weekOfMonth
为2且month
为2016.我想获取当前周的可用日期(从星期日到星期六) 。但是,由于本周(星期日)的第一天是上个月,我需要在2016年2月1日至2016年2月6日(星期一至星期六)之间获取日期。
year
或者如果我知道当前周的开始日期和结束日期,那也会有所帮助。
答案 0 :(得分:0)
这是一个略显笨重的方法,基于使用dayOfWeek = 0获取日期,然后前进直到结果日期在同一个月
int monthTarget = 2;
int dayOfWeekTarget = 0;
int yearTarget = 2016;
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *comp = [[NSDateComponents alloc] init];
[comp setMonth:monthTarget];
[comp setYear:yearTarget];
[comp setWeekOfMonth:dayOfWeekTarget];
[comp setDay:dayOfWeekTarget];
// see what this gives us
NSDate *firstDate = [calendar dateFromComponents:comp];
NSDateComponents *firstDayComponents = [calendar components:NSCalendarUnitMonth | NSCalendarUnitDay fromDate:firstDate];
NSInteger day = [firstDayComponents day];
NSInteger month = [firstDayComponents month];
// move forward if we have to
while (month < monthTarget)
{
dayOfWeekTarget++;
[comp setDay:dayOfWeekTarget];
firstDate = [calendar dateFromComponents:comp];
firstDayComponents = [calendar components:NSCalendarUnitMonth | NSCalendarUnitDay fromDate:firstDate];
day = [firstDayComponents day];
month = [firstDayComponents month];
}
我相信你可以稍微整理一下,但方法就在这里!