2010-08-03 7 views
5

Inicié un NSDate con [NSDate date]; y quiero verificar si han pasado 5 horas desde la variable NSDate. ¿Cómo voy a hacer eso? Lo que tengo en mi código esCómo saber la cantidad de horas desde NSDate

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 por adelantado.

Respuesta

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

Básicamente, aquí estoy preguntando cuántos segundos han pasado desde que obtuvimos nuestro requestTime. Luego, con un poco de magia matemática, también conocida como dividir por el número de segundos en una hora, podemos obtener el número de horas que han pasado.

Una palabra de advertencia. Asegúrese de utilizar la palabra clave "retener" cuando configure el tiempo de solicitud. A xcode le gusta olvidar los objetos NSDate configurados sin él.

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

Debe usar NSDateComponents en su lugar – cdstamper

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

usar este método, o algo a lo largo de estas líneas.

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

Puede hacer una simple comprobación de la respuesta de la hora entera.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion]; 
if(hours < 5){ 
    # It has not yet been 5 hours. 
} 
Cuestiones relacionadas