2010-08-03 43 views
5

Tôi đã khởi tạo một NSDate với [NSDate date]; và tôi muốn kiểm tra xem có phải là 5 giờ kể từ biến NSDate đó hay không. Tôi sẽ làm thế nào? Những gì tôi có trong mã của tôi làCách kể số giờ kể từ NSDate

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

Trong một phương pháp sau, tôi muốn kiểm tra xem có phải là 12 giờ kể từ khi yêu cầuThời gian không. Hãy giúp tôi! Cảm ơn trước.

Trả lời

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

Về cơ bản ở đây tôi hỏi số giây đã trôi qua kể từ lần đầu tiên chúng tôi nhận được requestTime của chúng tôi. Sau đó, với một chút phép thuật toán học, hay còn gọi là chia cho số giây trong một giờ, chúng ta có thể nhận được số giờ đã trôi qua.

Một lời cảnh cáo. Đảm bảo bạn sử dụng từ khóa "giữ lại" khi đặt thời gian yêu cầu. xcode thích quên những đối tượng NSDate nào được đặt thành không có nó.

requestTime = [[NSDate date] retain]; 
+5

Bạn nên sử dụng NSDateComponents để thay thế – cdstamper

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

Hãy thử sử dụng phương pháp này, hoặc cái gì đó dọc những dòng này.

- (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; 
} 

Sau đó bạn có thể kiểm tra đơn giản về phản hồi số nguyên giờ.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion]; 
if(hours < 5){ 
    # It has not yet been 5 hours. 
} 
Các vấn đề liên quan