[NSDate distantPast]与[NSDate distantFuture]分别是什么意思?

8 篇文章 0 订阅
1 篇文章 0 订阅

今天被问到了这个问题,虽然对问题进行了答复,但是事后感觉还是没有描述清楚该问题,这里整理一下这个小问题:

[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秒。

这里的下限还好理解,但是上限我不是很理解为什么如此设置?如有大神知晓,烦请告知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值