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
一般来说,格式化程序只用于生成人类可读的值形式,而不用于对值本身进行操作。通常最好使用格式化程序
- 可用的最高级别API,以及
- 可用的最具体的API
一般来说,格式化程序只用于生成值的可读形式,而不用于对值本身进行操作。是否可能存在亚秒级差异?尝试注销日期的
-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;你是如何记录时间间隔的?看起来你在打印一个整数,但实际上是双倍的。