Вопрос

Я инициировал NSDate с [датой NSDate]; И я хочу проверить, было ли сейчас 5 часов с момента этой переменной NSDate. Как бы я пошел это делать? Что у меня в моем коде

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

В более позднем методе я хочу проверить, было ли ей 12 часов с момента запроса времени. Пожалуйста помоги! Заранее спасибо.

Это было полезно?

Решение

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

В основном здесь я задаю, сколько секунд прошло с тех пор, как мы впервые получили наше время запроса. Затем с небольшим математическим магией, ака, разделяя на количество секунд за час, мы можем получить количество прошедших часов.

Слово осторожно. Убедитесь, что вы используете ключевое слово «Сохранить» при настройке времени запроса. XCode любит забывать, какие объекты NSDate установлены без него.

    requestTime = [[NSDate date] retain];

Другие советы

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

Попробуйте использовать этот метод или что-то вдоль этих строк.

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

Затем вы можете сделать простой чек на целочисленный час ответа.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top