【问题标题】:Check if a NSDate object is in the past检查 NSDate 对象是否在过去
【发布时间】:2016-05-21 00:13:14
【问题描述】:

我想检查我拥有的 NSDate 对象是过去还是现在(如果不是将来)。

我试过了,但它不起作用:

-(void)checkIfMuted
{
    NSDate *muteOverDate=[[NSUserDefaults standardUserDefaults] objectForKey:@"muteOverDate"];

    if ([muteOverDate timeIntervalSinceNow]<0.0) {
        self.muteEnabled=YES;
        return;
    }
    self.muteEnabled=NO;
    NSLog(@"%@\n%@",[[NSDate date] description],[muteOverDate description]);
}

NSLog 打印: 2016-02-10 14:55:19 +0000 2016-02-10 15:54:32 +0000

知道为什么它不起作用吗?谢谢!

【问题讨论】:

  • 那么什么不起作用?
  • 您发布的代码很好。有什么问题?如果 muteOverDate 是过去的,您的 if 声明将是真的。鉴于日志输出,很明显muteOverDate 是未来(近一小时)。
  • @rmaddy 你是对的,我错了,我想看看它是否在未来 :)
  • 然后只需将&lt; 更改为&gt;
  • @rmaddy 好的,谢谢!

标签: ios objective-c cocoa-touch nsdate


【解决方案1】:

使用[NSDate compare:]:

NSDate *now = [NSDate date];
if ([now compare:muteOverDate] == NSOrderedAscending) {
    // muteOverDate is in the future
}

【讨论】:

  • 如果我想检查它是否在未来?
  • @FS.O NSOrderedDescending.
  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 2016-12-22
  • 2018-04-11
  • 2011-03-18
  • 2012-07-07
相关资源
最近更新 更多