NSDate *date = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSLog([@"today is " stringByAppendingString:[dateFormat stringFromDate:date]]);
NSLog([@"firstBirthdayDate is " stringByAppendingString:[dateFormat stringFromDate:firstBirthdayDate]]);
NSLog([@"secondBirthdayDate is " stringByAppendingString:[dateFormat stringFromDate:secondBirthdayDate]]);
if ([firstBirthdayDate isEqualToDate:secondBirthdayDate])
NSLog(@"First date is the same as second date");
if (firstBirthdayDate < date)
NSLog(@"First date is earlier than today");
else
NSLog(@"First date is later than today");
if (secondBirthdayDate < date)
NSLog(@"Second date is earlier than today");
firstBirthdayDate
是01/23/2012 secondBirthdayDate
是01/23/2012 这是我在日志中得到的内容:
第一个日期与第二个日期相同
第一个日期晚于今天
第二个日期早于今天
我想我疯了......
答案 0 :(得分:7)
使用if ([date1 isEqualToDate:date2])
比较两个日期,否则您可以使用以下内容
if ([date1 compare:date2] == NSOrderedSame)
if ([date1 compare:date2] == NSOrderedAscending)
if ([date1 compare:date2] == NSOrderedDescending)
>
,<
或=
仅用于比较非指针。基本上我的理解是,当您使用这些运算符时,它可能是比较内存地址而不是内存中的值。所以你会得到意想不到的结果。
从逻辑上讲,这就是它的工作原理:
if (obj1 > obj2) {
return NSOrderedDescending;
}
if (obj1 < obj2) {
return NSOrderedAscending;
}
if (obj1 == obj2) {
return NSOrderedSame;
}
您可以使用任何比较语句来比较日期。
答案 1 :(得分:0)
您无法使用<
或>
来比较日期。你必须使用正确的方法。看看this帖子。
答案 2 :(得分:0)
if ([date compare:firstBirthdayDate] == NSOrderedAscending){
NSLog(@"First date is earlier than today");
}
else{
NSLog(@"First date is later than today");
}
if ([date compare:secondBirthdayDate] == NSOrderedAscending){
NSLog(@"Second date is earlier than today");
}
if ([firstBirthdayDate compare: secondBirthdayDate] == NSOrderedSame)
NSLog(@"First date is the same as second date");
答案 3 :(得分:0)
简而言之:因为基本运算符只适用于基本类型 任何OBJECT&lt; &GT; != == ...对此变量的POINTER值执行基本操作
在c ++中可以覆盖这些运算符 在objC和java以及其他语言中,您需要使用NSObject的isEqual函数