2

我在过去(过去 1 小时)创建了一个 NSDate,看起来设置正确,唯一的事情是我想用它来确定是否发生了事件。因为我设置为过去,所以当我进行检查时,它肯定会认为偶数已经发生,但 timeIntervalSinceDate 似乎只给出了积极的结果?

这是我与 timeIntervalSinceDate 一起使用的代码

 NSDate *now = [NSDate date];
  NSTimeInterval secondsSincePlantingInterval = [now timeIntervalSinceDate:plantingDate];

哪个给出了 68 秒,但应该是 -68 秒,还是不返回负值?

4

2 回答 2

5

这是完全正常的,记录在案的行为

文件指出:

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate

返回值

接收者与另一个日期之间的间隔。如果接收者早于另一个日期,则返回值为负。

由于plantingDate是过去,接收者早于它。因此该值为正。

而且 ; 这是简单的英语

 [now timeIntervalSinceDate:plantingDate];

所以,从种植日期到现在的时间间隔是正的。

于 2012-11-12T21:05:07.560 回答
3

它确实返回负值,是的。但如果plantingDate是过去,那么我希望secondsSincePlantingInterval是积极的。

如果你仔细想想,那一行是这样写的:

告诉我从now开始的秒数。 plantingDate

就像星期二 2 是从星期一 1 开始的一天,now是 +ve 秒之后plantingDate

你要:

NSTimeInterval secondsSincePlantingInterval = [plantingDate timeIntervalSinceNow];
于 2012-11-12T21:06:22.960 回答