Question

Je NSDate avec un initié [date NSDate]; et je veux vérifier si oui ou non il a été 5 heures depuis cette variable NSDate. Comment dois-je procéder? Ce que j'ai dans mon code est

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

Dans une méthode plus tard, je veux vérifier si oui ou non il a été 12 heures depuis requestTime. S'il vous plaît aider! Merci à l'avance.

Était-ce utile?

La solution

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

En fait ici je demande combien de secondes se sont écoulées depuis que nous avons eu notre requestTime. Puis, avec un peu de magie mathématique, alias divisant par le nombre de secondes dans une heure, nous pouvons obtenir le nombre d'heures qui se sont écoulées.

Un mot d'avertissement. Assurez-vous d'utiliser le mot-clé « conserver » lors du réglage du requesttime. Xcode aime oublier ce que les objets sont mis à NSDate sans elle.

    requestTime = [[NSDate date] retain];

Autres conseils

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

Essayez d'utiliser cette méthode, ou quelque chose dans ce sens.

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

Vous pouvez alors faire une simple vérification de la réponse d'une heure entière.

int hours = [dateUtilityClass hoursSinceDate:dateInQuestion];
if(hours < 5){
    # It has not yet been 5 hours.
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top