我用[NSDate date]发起了一个NSDate;我想检查自NSDate变量以来是否已经过了5个小时。我该怎么做呢?我的代码中包含的是
requestTime = [[NSDate alloc] init];
requestTime = [NSDate date];
在后来的方法中,我想检查自requestTime以来是否已经过了12个小时。请帮忙!提前谢谢。
答案 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.
}