Frage

Ich initiierte ein NSDate mit [NSDate Datum]; und ich möchte überprüfen, ob oder nicht es war 5 Stunden seit dieser NSDate Variable. Wie würde ich mich über das zu tun? Was ich in meinem Code haben, ist

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

In einer späteren Methode, die ich überprüfen mag, ob es seit requestTime 12 Stunden gewesen. Bitte Hilfe! Vielen Dank im Voraus.

War es hilfreich?

Lösung

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

Im Grunde hier frage ich, wie viele Sekunden sind vergangen, seit wir zum ersten Mal unsere requestTime bekam. Dann mit einer wenig Mathe Magie, auch bekannt als durch die Anzahl der Sekunden in einer Stunde teilen, können wir die Anzahl der Stunden erhalten, die vergangen ist.

Ein Wort der Vorsicht. Stellen Sie sicher, dass Sie das „behalten“ Schlüsselwort verwenden, wenn die requesttime Einstellung. Xcode mag vergessen, was NSDate Objekte werden auf ohne sie.

    requestTime = [[NSDate date] retain];

Andere Tipps

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

Versuchen Sie diese Methode verwenden, oder etwas in diese Richtung.

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

Sie können dann eine einfache Prüfung auf den ganze Zahl Stunden Reaktions tun.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top