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.

¿Fue útil?

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.
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top