Je souhaite activer une fonctionnalité permettant à l'utilisateur d'exécuter une fonctionnalité seulement APRÈS 1 heure à partir de l'heure actuelle. Que dois-je passer en paramètre toDate
dans le code ci-dessous pour obtenir le décalage horaire de 1 heure par rapport à l'heure actuelle? Je ne sais pas comment définir l'heure future dans NSDateFormatter
OU NSDateComponents
. Donc, je ne pouvais pas écrire ce que j'ai essayé.Comment obtenir le décalage horaire de 1 heure à partir de NSDate
- (NSInteger)timeDifference:(NSDate *)fromDate ToDate:(NSDate *)toDate
{
NSLog(@" FromDate: %@, ToDate: %@",fromDate,toDate);
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *differenceValue = [calendar components:NSHourCalendarUnit
fromDate:fromDate toDate:toDate options:0];
NSLog(@"Calculated hour difference : %d",[differenceValue hour]);
NSInteger hourDifference = [differenceValue hour];
NSLog(@" HourDifference: %d",hourDifference);
return hourDifference;
}
C'est l'approche naïve et incorrecte qui provoquera des erreurs. – uchuugaka
@uchuugaka Je n'ai jamais entendu dire que cette méthode ne fonctionne pas correctement, mais vous pourriez avoir raison. –
Cela fonctionnera beaucoup de temps, mais NSDate est un wrapper mince autour de l'intervalle de temps et ne connaît pas la partie humaine des calendriers et des fuseaux horaires. Dans un sens, c'est correct. Mais en réalité, il manque tous les trucs fous qui se produisent avec ce qui sont des cas de coin arbitraires légiférés. – uchuugaka