Comment dire nombre d'heures depuis NSDate
-
25-09-2019 - |
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.
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.
}