今天被问到了这个问题,虽然对问题进行了答复,但是事后感觉还是没有描述清楚该问题,这里整理一下这个小问题:
[NSDate distantPast]:表示过去的某个不可达到的事件点
[NSDate distantFuture]:表示未来的某个不可达到的事件点
以上是回答的原话,但更直接的描述我觉得应该是:
将时间与整数类比,则:
[NSDate distantPast]等同与负无穷大;
[NSDate distantFuture]等同与正无穷大;
这样描述很多人就可以很直观的理解了。
好了,但是计算机描述整数是有上下限的,那么时间的描述在计算机中是不是也有确定的上下限呢?对于上限,还真不好猜测,但是下限呢?我们一直都知道,标准时间的下限一般都从1970年1月1日0点0分0秒开始算,是不是这个下限是它呢?
简单做个demo:
NSDate *date1 = [NSDate distantPast];
NSDate *date2 = [NSDate distantFuture];
NSLog(@"%@,%@",date1,date2);
其结果为:
Printing description of date1:
0001-01-01 00:00:00 +0000
Printing description of date2:
4001-01-01 00:00:00 +0000
由此可见,[NSDate distantPast]在计算机中表示的是公元一年1月1日0点0分0秒,和我们的经验相左。
而上限[NSDate distantFuture]为公元4001年1月1日0点0分0秒。
这里的下限还好理解,但是上限我不是很理解为什么如此设置?如有大神知晓,烦请告知。