如何计算当前时间是否在一个时间跨度内

时间:2012-03-24 19:27:44

标签: objective-c datetime time

我正在上课的iphone应用程序,我的小组有时间麻烦。

我们正在使用的想法是我们有预定的活动(比如说下午2:00),我们想知道我们是否在预定时间(比如+/- 15分钟)之内的一定时间内。因此,对于此示例,如果事件发生在下午2点,如果从1:45-2:15 pm调用此事件,则该方法将返回true / yes,否则将返回false / no。

我知道当前的时间/日期,但是如何检查是否在事件发生时间的某个时间范围内? ?

所以我想要的是一个类似于下面的方法,currentTime获取当前时间的NSDate对象,classStartTime获取类的开始时间的NSDate对象:

- (BOOL)dateInRange:(NSDate*)currentTime inRangeOf:(NSDate*)classStartTime
{
    if([currentTime <= [classStartTime dateByAddingTimeInterval:60*15]] && [currentTime >= [classStartTime dateByAddingTimeInterval:-(60*15)]])
    {
        return TRUE;
    }
    else{
        return FALSE;
    }
}

我知道这不起作用。如何使if语句的比较部分正常工作

3 个答案:

答案 0 :(得分:0)

我想,你的时间是NSDate。您可以将TimeIntervalSinceDate:与间隔的开始时间一起使用,并检查结果是否为正且小于间隔长度。

答案 1 :(得分:0)

使用NSDateNSDateComponents。我附近没有Mac,因此下面的代码可能会有错误。

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
int comp = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *theDateComponents = [gregorian components:comp fromDate:[NSDate date]];
int hour = [theDateComponents hour];
int minute = [theDateComponents minute];
if ((hour == 13 && minute >= 45) || (hour == 14 && minute <= 15)) {
  //do your stuff
}

希望有所帮助

答案 2 :(得分:0)

查找开始日期和结束日期 +(id)dateWithTimeInterval:(NSTimeInterval)seconds sinceDate:(NSDate *)date

然后使用比较方法检查您检查的日期是否在您的日期之内......