检查iPhone中的date是否在两天之内

我知道如何比较date。在我的情况下,让Date1 = 2011-10-14和Date2 = 2011-10-20。我想检查是否10月15日介于Date1和Date2.I'm使用下面的代码:

if ( [date compare:Date1] == NSOrderedDescending && [date compare:Date2] == NSOrderedAscending) { //write codes } 

但这不会检查10月14日到20日之间是否是十月十日。它检查整个date。 那么,我将如何实现这一点。 Thnx提前。

我希望下面的代码能帮助你。 假设你有Date1和Date2,

 NSCalendar *calendar = [NSCalendar currentCalendar]; NSInteger desiredComponents = (NSDayCalendarUnit | NSMonthCalendarUnit); NSDateComponents *firstComponents = [calendar components:desiredComponents fromDate:Date1]; NSDateComponents *secondComponents = [calendar components:desiredComponents fromDate:Date2]; NSDate *firstWOYear = [calendar dateFromComponents:firstComponents]; NSDate *SecondWOYear = [calendar dateFromComponents:secondComponents]; NSComparisonResult result = [firstWOYear compare:SecondWOYear]; if (result == NSOrderedAscending) { //Date1 is before Date2 } else if (result == NSOrderedDescending) { //Date1 is after Date2 } else { //Date1 is the same day/month as Date2 } 

其中date1 = 2011-10-14和date2 = 2011-10-20, date是您要检查的date。

做这个

 if([date timeIntervalSince1970] >= [date1 timeIntervalSince1970] && [date timeIntervalSince1970] <= [date2 timeIntervalSince1970]) { NSLog(@"%@ lies between and including %@ and %@",date,date1,date2); // if you just wanna check for between (not including) two dates just remove the equal signs above in condition check } else NSLog(@"%@ does not lie between %@ and %@",date,date1,date2); 

上面的代码将检查date是否在给定的两个极端date之间,但如果你只是想检查(但不包括)极端date,那么只要从条件检查中删除等号。

比较 – >

 NSString *dateString1 = @"2011-10-14"; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = @"yyyy-MM-dd"; NSDate *date1 = [formatter dateFromString:dateString1]; NSString *dateString2 = @"2011-10-20"; NSDateFormatter *formatter2 = [[NSDateFormatter alloc]init]; formatter2.dateFormat = @"yyyy-MM-dd"; NSDate *date2 = [formatter2 dateFromString:dateString2]; NSString *dateString3 = @"2011-10-15"; NSDateFormatter *formatter3 = [[NSDateFormatter alloc]init]; formatter3.dateFormat = @"yyyy-MM-dd"; NSDate *date3 = [formatter3 dateFromString:dateString3]; if ([date3 compare:date1] == NSOrderedDescending && [date3 compare:date2] == NSOrderedAscending) { NSLog(@"%@ lies b/w %@ and %@",dateString3,dateString1,dateString2); } else { NSLog(@"Doesn't lie!"); }