比较日期和时间对象

时间:2014-03-24 07:26:10

标签: ios iphone objective-c

我正在使用一种方法并且它没有给我正确的输出然后我才知道,我比较日期和时间对象的方式是完全错误的。我用谷歌搜索,但找不到一些相关的解决方案。我想比较一个日期和时间对象与另一个对象。

例如:

  if (dtcur >= dtstart && dtcur <= myDT) // 2014-03-24 11:30:00 >= 2014-03-24 11:00:00 & 2014-03-24 11:30:00 <= 2014-03-25 11:00:00
  {
     // should come here in if condition
  }

但它进入了其他方面。这意味着我的比较是错误的,任何人都可以帮助我如何比较两个日期和时间对象。提前致谢

3 个答案:

答案 0 :(得分:0)

BOOL isLaterOrEqualToStartDate = [dtcur isEqualToDate:dtstart] || [dtcur later:dtstart];
BOOL isEarlierOrEqualToMyDate = [dtcur isEqualToDate:myDT] || [dtcur earlier:myDT];

if(isLaterOrEqualToStartDate && isEarlierOrEqualToMyDate)
{
    // do something
}

答案 1 :(得分:0)

你指的是NSDate?如果是这样,你可以使用属性timeIntervalSince1970(这是一个double值)进行比较。你无法直接比较NSDate,因为它们是对象。这是一个小例子。您可以取消注释该行以查看结果如何更改。

NSDate *date1 = [NSDate date];
NSDate *date2 = [date1 dateByAddingTimeInterval:10];

if (date2.timeIntervalSince1970 > date1.timeIntervalSince1970)
{
 NSLog(@"date 2 is bigger");
}
else
{
NSLog(@"date 1 is bigger");
}

答案 2 :(得分:0)

许多对象(包括NSDate)都有compare:方法。像这样使用它:

if ([date1 compare:date2] == NSOrderedAscending) {
  // date2 is after date1
} else if ([date1 compare:date2] == NSOrderedDescending) {
  // date2 is before date1
} else if ([date1 compare:date2] == NSOrderedSame) {
  // they're both the same date
}