Cómo saber la cantidad de horas que NSDate
-
25-09-2019 - |
Pregunta
I inició una NSDate con [fecha NSDate]; y yo quiero comprobar si es o no han pasado 5 horas desde esa variable NSDate. ¿Cómo voy a ir haciendo eso? Lo que tengo en mi código es
requestTime = [[NSDate alloc] init];
requestTime = [NSDate date];
En un método más tarde Quiero comprobar si es o no Han pasado 12 horas desde requestTime. ¡Por favor ayuda! Gracias de antemano.
Solución
int seconds = -(int)[requestTime timeIntervalSinceNow];
int hours = seconds/3600;
Básicamente aquí estoy preguntando cómo han pasado muchos segundos desde que nos dieron nuestra requestTime. Luego, con un poco de magia matemática, también conocido como dividiendo por el número de segundos en una hora, podemos obtener el número de horas que han pasado.
Una palabra de precaución. Asegúrese de que utiliza la palabra clave "mantener" al establecer el requesttime. Xcode le gusta olvidar lo NSDate objetos se ponen a sin él.
requestTime = [[NSDate date] retain];
Otros consejos
NSInteger hours = [[[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:requestTime toDate:[NSDate date] options:0] hour];
if(hours >= 5)
// hooray!
Trate de usar este método, o algo en este sentido.
- (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;
}
A continuación, puede hacer una simple comprobación de la respuesta número entero horas.
int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
# It has not yet been 5 hours.
}