Как узнать количество часов с NSDate - PullRequest
5 голосов
/ 03 августа 2010

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

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

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

Ответы [ 3 ]

13 голосов
/ 03 августа 2010
NSInteger hours = [[[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:requestTime toDate:[NSDate date] options:0] hour];
if(hours >= 5)
    // hooray!
13 голосов
/ 03 августа 2010
int seconds = -(int)[requestTime timeIntervalSinceNow];
int hours = seconds/3600;

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

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

    requestTime = [[NSDate date] retain];
1 голос
/ 09 февраля 2014

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

- (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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...