这是代码,它给我带来了一些问题:
NSDate * d1 = [NSDate dateWithTimeIntervalSinceReferenceDate:444555883.659000];
NSTimeInterval since1970 = [d1 timeIntervalSince1970];
NSDate * d2 = [NSDate dateWithTimeIntervalSince1970:since1970];
NSLog(@"%@\n%@", d1, d2);
NSLog(@"%d", [d1 compare: d2] == NSOrderedSame);
我无法理解的问题是测试失败并带有以下日志:
2015-02-02 07:44:43 +0000
2015-02-02 07:44:43 +0000
0 // test failed
测试失败的原因是什么?
答案 0 :(得分:1)
if (interval1 + delta > interval2 && interval1 - delta < interval2)
(您可以通过在日期添加/减去delta来直接使用NSDates,但它太麻烦了,我也懒得把它写出来。)
答案 1 :(得分:0)
您正在比较双倍,因此您无法检查是否相等。两个实例打印出相同输出的事实并不意味着什么,因为默认输出格式的精度是1秒。
通过这样做来比较它们:
if (fabs(t1 - t2) < delta)
其中delta是非常小的量,例如0.005
或者您可以在比较之前使用NSDateComponents
设置您不需要0的日期的更高精度组件