Domanda

Ho avviato un NSDate con [NSDate date];e voglio verificare se sono trascorse o meno 5 ore da quella variabile NSDate.Come potrei farlo?Quello che ho nel mio codice è

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

In un metodo successivo voglio verificare se sono trascorse o meno 12 ore da requestTime.Per favore aiuto!Grazie in anticipo.

È stato utile?

Soluzione

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

Fondamentalmente qui sto chiedendo quanti secondi sono trascorsi da quando abbiamo ricevuto la nostra requestTime per la prima volta.Quindi con un po' di magia matematica, ovvero dividendo per il numero di secondi in un'ora, possiamo ottenere il numero di ore trascorse.

Un avvertimento.Assicurati di utilizzare la parola chiave "retain" quando imposti requesttime.A xcode piace dimenticare su cosa sono impostati gli oggetti NSDate senza di esso.

    requestTime = [[NSDate date] retain];

Altri suggerimenti

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

Prova ad usare questo metodo, o qualcosa in questo senso.

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

Si può quindi fare un semplice controllo sulla risposta ora intero.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top