如何在TAPKU日历中检查NSDatedate

我正在使用核心数据来存储我的项目的对象。对象中有一个date字段。我想检查与Tapku日历组件的iPhone点击date。 我的对象上的date是格式

2011-01-10这是一个本地化的date。

我如何检查date从tapku日历控件返回的date。

是的,你可以,这是我做的工作:

(NSArray *)calendarMonthView:(TKCalendarMonthView *)monthView marksFromDate:(NSDate *)startDate toDate:(NSDate *)lastDate

  • 使正常的核心数据获取来获取一个对象数组
  • 使用[NSArray indexesOfObjectsPassingTest:]方法从startDate到lastDate每天开始检查
  • 对于所有通过testing添加和对象的标记数组,并添加一个字典与testing的一天作为关键和提取的对象作为值

警告:确保你投NSDate对象到一个没有时间和格林尼治标准时间:0date,以使日常比较工作(学习这个困难的方式…)

这里是一些代码…

self.marksArray = [NSMutableArray array]; self.dataDictionary = [NSMutableDictionary dictionary]; NSCalendar *cal = [NSCalendar currentCalendar]; [cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSDateComponents *comp = [cal components:(NSMonthCalendarUnit | NSMinuteCalendarUnit | NSYearCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit) fromDate:start]; NSDate *ds = [cal dateFromComponents:comp]; // Init offset components to increment days in the loop by one each time NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; [offsetComponents setDay:1]; while (YES) { // Is the date beyond the last date? If so, exit the loop. // NSOrderedDescending = the left value is greater than the right if ([ds compare:end] == NSOrderedDescending) { break; } NSIndexSet *indexes = [arrayWithObjectsFromCoreData indexesOfObjectsPassingTest: ^BOOL (id el, NSUInteger i, BOOL *stop) { NSDate *upd = [(YOUR_ENTINY *)el updated]; NSDate *day=[self midnightUTC:upd]; if([ds isSameDay:day]){ return TRUE; } return FALSE; }]; if (indexes.count>0) { [self.marksArray addObject:[NSNumber numberWithBool:YES]]; [self.dataDictionary setObject:[wods objectsAtIndexes:indexes] forKey:ds]; }else { //no wods in this date [self.dataArray addObject:[NSNumber numberWithBool:NO]]; } // Increment day using offset components (ie, 1 day in this instance) ds = [cal dateByAddingComponents:offsetComponents toDate:ds options:0]; } [offsetComponents release]; 

midnightUTC方法可以在这里find: http : //www.voidasterisk.org/post/4209842795/how-to-calculate-nsdate-of-midnight-in-ios

可以做更多的信息,但tapku库在NSDate上有一个名为isSameDay的扩展方法,所以你可以使用:

 if ([myDate isSameDay:returnedDate]) // Do something here 

那是你在找什么?