3
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");
  • 今天是 11/08/2012
  • firstBirthdayDate是 2012 年 1 月 23 日
  • secondBirthdayDate是 2012 年 1 月 23 日

这是我在日志中得到的:

第一个日期与第二个日期相同

第一个日期晚于今天

第二个日期早于今天

我想我要疯了...

4

4 回答 4

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;
    }

您可以使用任何比较语句来比较日期。

于 2012-11-09T04:12:14.330 回答
0

您不能使用<or>来比较日期。你必须使用正确的方法。看看这个帖子。

于 2012-11-09T04:14:45.837 回答
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");
于 2012-11-09T04:23:00.700 回答
0

简而言之:因为基本运算符仅适用于任何 OBJECT < > != == ... 对这个变量的 POINTER 值进行基本操作

在 c++ 中,这些运算符可以用 objC 和 java 以及其他语言覆盖,您需要使用 NSObject 的 isEqual 函数

于 2012-11-09T09:00:52.403 回答