Objective-C:如何检查两个日期之间是否发生日期?

时间:2013-04-17 21:33:50

标签: objective-c date compare nsdate

我之前搜索过这个问题并发现:

if (([dateToCompare compare:4HoursEarlier] == NSOrderedAscending) && ([dateToCompare compare:specifiedDate] == NSOrderedDescending))
{
    NSLog(@"dateToCompare between 4HoursEarlier and specifiedDate");
    // do something
}

不幸的是,这似乎不起作用(NSLog永远不会打印出来)。

我有一个遍历数组的for循环(包含日期)。我需要检查指定日期是否在另一个日期的4小时内。我有(伪代码):

specifiedDate = a date I specify;
dateToCompare = current date gathered in for loop;
4HoursEarlier = 4 hours before specifiedDate;

如何检查指定日期是否在dateToCompare(从数组/ for循环收集的日期)的4小时内?

1 个答案:

答案 0 :(得分:1)

我认为你的比较是错误的。在你的情况下交换NSOrderedAscendingNSOrderedDescending

我的记忆辅助是

[obj1 compare:obj2] == NSOrderedAscending  : obj1, obj2 is an ascending sequence
[obj1 compare:obj2] == NSOrderedDescending : obj1, obj2 is an descending sequence

因此,要检查dateToCompare的时间是否晚于fourHoursEarlier 使用

if ([dateToCompare compare:fourHoursEarlier] == NSOrderedDescending) ...