在coredata中有两个不同的实体,其中包括&Class; 39< ClassDetails'和' ClassSlots'需要来自ClassSlots'的所有班级老虎机日期实体。在ClassSlots'中有多个Class Slots。在“课程详细信息”中包含课程开始日期和结束日期的实体实体。场景就像是在课堂添加时添加时间只有星期日 - 星期一 - 星期二..格式。现在,在提取时,如何在特定类的开始日期和结束日期之间获取那些日期(以日期格式)。
使用这段代码但没有得到预期的结果(dayId就像这样 - 星期日为0,星期一为1)
NSLog(@"Start date ==>%@ End date ==>%@ dayId ==>%@",startDate,endDate,dayId);
NSDateFormatter *dateFormator = [[NSDateFormatter alloc] init];
[dateFormator setDateFormat:@"yyyy-MM-dd"];
NSDateComponents *components = [[NSCalendar currentCalendar] components: NSYearCalendarUnit | NSWeekOfYearCalendarUnit fromDate:[dateFormator dateFromString:startDate]];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setWeekOfYear:[components weekOfYear] + 1];
[comps setWeekday:[components day]];
[comps setYear:[components year]];
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setFirstWeekday:[dayId intValue]+1];
NSDate *date = [calendar dateFromComponents:comps];
NSLog(@"date ==> %@",date);
答案 0 :(得分:0)
在您的情况下,您要检查从头到尾整整一个月 - 所以您可以使用rangeOfUnit
NSCalendar
的API。
NSDate *aDate; // make this any date in the desired month
NSInteger numberOfDaysInMonth = [[NSCalendar currentCalendar]
rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth
forDate:aDate].length;
如果你知道那个月的第一天的工作日是什么,你可以自己完成其余的逻辑。
NSCalendarUnit units = NSCalendarUnitDay | NSCalendarUnitMonth;
NSDateComponents *comps = [[NSCalendar currentCalendar]
components:units fromDate:aDate];
comps.day = 1;
NSDate *firstDayInMonth = [[NSCalendar currentCalendar] dateFromComponents:comps];
comps = [[NSCalendar currentCalendar]
components: NSCalendarUnitWeekday fromDate:firstDayInMonth];
NSInteger weekdayOfFirstDayInMonth = comps.weekday;