如何判断自NSDate以来的小时数

时间:2010-08-03 19:38:36

标签: iphone objective-c ios4

我用[NSDate date]发起了一个NSDate;我想检查自NSDate变量以来是否已经过了5个小时。我该怎么做呢?我的代码中包含的是

requestTime = [[NSDate alloc] init];
requestTime = [NSDate date];

在后来的方法中,我想检查自requestTime以来是否已经过了12个小时。请帮忙!提前谢谢。

3 个答案:

答案 0 :(得分:13)

int seconds = -(int)[requestTime timeIntervalSinceNow];
int hours = seconds/3600;

基本上我在这里问我们第一次得到requestTime后经过了多少秒。然后用一点点数学魔法,也就是用一小时的秒数来划分,我们就可以得到已经过去的小时数。

谨慎一点。确保在设置请求时间时使用“retain”关键字。如果没有它,xcode就会忘记NSDate对象的设置。

    requestTime = [[NSDate date] retain];

答案 1 :(得分:13)

NSInteger hours = [[[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:requestTime toDate:[NSDate date] options:0] hour];
if(hours >= 5)
    // hooray!

答案 2 :(得分:1)

尝试使用此方法或类似的东西。

- (int)hoursSinceDate :(NSDate *)date
{
    #define NUBMER_OF_SECONDS_IN_ONE_HOUR 3600

    NSDate *currentTime = [NSDate date];
    double secondsSinceDate = [currentTime timeIntervalSinceDate:date];
    return (int)secondsSinceDate / NUBMER_OF_SECONDS_IN_ONE_HOUR;
}

然后,您可以对整数小时响应进行简单检查。

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}