Wie seit NSDate Anzahl von Stunden erzählen
-
25-09-2019 - |
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.
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.
}