Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 这个objective-c日期检查方法可以吗?附加代码(获得不同的结果)_Iphone_Objective C_Ios_Nsdate - Fatal编程技术网

Iphone 这个objective-c日期检查方法可以吗?附加代码(获得不同的结果)

Iphone 这个objective-c日期检查方法可以吗?附加代码(获得不同的结果),iphone,objective-c,ios,nsdate,Iphone,Objective C,Ios,Nsdate,我很困惑,因为我不知道当两个日期都是相同的年/月/日/小时/分钟/秒时,下面的方法在查看我的应用程序时似乎不起作用,但是当我编写一个单元测试来测试它时,它似乎工作得很好。下面的代码是否由于某种原因而不健壮 代码是: - (BOOL)isAfterThisDate:(NSDate*)thisDate { NSComparisonResult result = [self compare:thisDate]; if (result == NSOrderedDescending) {

我很困惑,因为我不知道当两个日期都是相同的年/月/日/小时/分钟/秒时,下面的方法在查看我的应用程序时似乎不起作用,但是当我编写一个单元测试来测试它时,它似乎工作得很好。下面的代码是否由于某种原因而不健壮

代码是:

- (BOOL)isAfterThisDate:(NSDate*)thisDate {
    NSComparisonResult result = [self compare:thisDate];
    if (result == NSOrderedDescending) {
        NSLog(@"        - isAfterThisDate: %@ is after %@ is TRUE", [self stringSummary], [thisDate stringSummary]);
        return TRUE;
    } else {
        NSLog(@"        - isAfterThisDate: %@ is after %@ is FALSE", [self stringSummary], [thisDate stringSummary]);
        return FALSE;
    }
}
下面是我的应用程序日志的摘录(即,当我在应用程序中使用此方法时)。我希望这是错误的,就像我的单元测试支持的那样

isAfterThisDate: Thu 03-11-2011 09:00:00 GMT+10:00 is after Thu 03-11-2011 09:00:00 GMT+10:00 is TRUE
作为参考,我使用的助手方法是:

- (NSString*) stringSummary {
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"EEE dd-MM-yyyy HH:mm:ss zzz"];
    NSString* str = [formatter stringFromDate:self];
    return str;
}

(作为参考——正如凯文指出的那样——我没有欣赏我约会中出现的亚秒)

是的


(作为参考——正如凯文指出的那样——我没有意识到我约会中出现的次秒现象)

一般来说,使用它更好

  • 可用的最高级别API,以及
  • 可用的最具体的API
因此,在本例中,-earlierDate:或-laterDate:,如果您只是要使用结果日期对象本身,或者如果您只是在测试给定的日期,那么是,-timeintervalsineclastDate


一般来说,格式化程序只用于生成人类可读的值形式,而不用于对值本身进行操作。

通常最好使用格式化程序

  • 可用的最高级别API,以及
  • 可用的最具体的API
因此,在本例中,-earlierDate:或-laterDate:,如果您只是要使用结果日期对象本身,或者如果您只是在测试给定的日期,那么是,-timeintervalsineclastDate


一般来说,格式化程序只用于生成值的可读形式,而不用于对值本身进行操作。

是否可能存在亚秒级差异?尝试注销日期的
-TimeIntervalenceReferenceDate
哦-有趣的一点-我会尝试这个…仍然是一个问题-得到了相同的值”-isAfterThisDate:Thu 03-11-2011 09:00:00 GMT+10:00 341967600在Thu 03-11-2011 09:00:00 GMT+10:00 341967600是真的”PS-我尝试实际区分TimeIntervalenceReferenceDate值,这突出显示了差异:)NSTimeInterval diff=self.TimeIntervalenceReferenceDate-thisDate.TimeIntervalenceReferenceDate;你是如何记录时间间隔的?看起来您打印的是一个整数,但它们实际上是双倍的。是否可能存在亚秒差异?尝试注销日期的
-TimeIntervalenceReferenceDate
哦-有趣的一点-我会尝试这个…仍然是一个问题-得到了相同的值”-isAfterThisDate:Thu 03-11-2011 09:00:00 GMT+10:00 341967600在Thu 03-11-2011 09:00:00 GMT+10:00 341967600是真的”PS-我尝试实际区分TimeIntervalenceReferenceDate值,这突出显示了差异:)NSTimeInterval diff=self.TimeIntervalenceReferenceDate-thisDate.TimeIntervalenceReferenceDate;你是如何记录时间间隔的?看起来你在打印一个整数,但实际上是双倍的。