Pergunta

Iniciei um nsdate com [Data do NSDATE]; E quero verificar se já faz 5 horas desde a variável nsdate. Como eu faria isso? O que tenho no meu código é

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

Em um método posterior, quero verificar se já faz 12 horas desde a solicitação. Por favor ajude! Desde já, obrigado.

Foi útil?

Solução

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

Basicamente, aqui estou perguntando quantos segundos se passaram desde que recebemos nosso tempo de solicitação. Então, com um pouco de magia matemática, também conhecida como dividindo pelo número de segundos em uma hora, podemos obter o número de horas que passaram.

Uma palavra de cautela. Certifique -se de usar a palavra -chave "reter" ao definir o tempo de solicitação. O Xcode gosta de esquecer quais objetos nsdate estão definidos sem ele.

    requestTime = [[NSDate date] retain];

Outras dicas

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

Tente usar esse método, ou algo nesse 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;
}

Você pode fazer uma verificação simples na resposta da hora inteira.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top