Je parle de cette fonction dans mon application. Je dois montrer quelques graphiques différents de différentes périodes. La période est choisie en faisant glisser le graphique actuel.Problème NSDate et DateByAddingComponents
J'ai des problèmes en utilisant les composants DateComponents. Quand je teste l'application, je montre la date éditée par les dateByAddingComponents, et il semble comme ça dans la console:
Date : 2009-12-14 10:06:13 GMT
Date : 2009-11-13 10:06:13 GMT
Date : 2009-10-12 09:06:13 GMT
Date : 2009-09-11 09:06:13 GMT
Date : 2009-08-10 09:06:13 GMT
Date : 2009-07-09 09:06:13 GMT
Date : 2009-06-08 09:06:13 GMT
Date : 2009-05-07 09:06:13 GMT
Date : 2009-04-06 09:06:13 GMT
Date : 2009-03-05 10:06:13 GMT
Date : 2009-02-04 10:06:13 GMT
Date : 2009-01-03 10:06:13 GMT
Date : 2008-12-02 10:06:13 GMT
Date : 2008-11-01 10:06:13 GMT
Date : 2008-09-30 09:06:13 GMT
Date : 2008-08-29 09:06:13 GMT
comme vous pouvez le voir, parfois changer de l'heure, mais le plus gros problème est qu'il ya manque un mois (le 10e de l'année 2008).
Il y a le code mis en œuvre pour les actions:
if (currentPosition.x > gestureStartPoint.x) {
switch (self.segmentedControl.selectedSegmentIndex) {
case 0:
[dateComponents setDay:-1];
self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
NSLog(@"Date : %@", date);
break;
case 1:
//NSLog(@"before : %@", date);
[dateComponents setMonth:-1];
self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
NSLog(@"Date : %@", date);
break;
case 2:
//NSLog(@"before : %@", date);
[dateComponents setYear:-1];
self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
NSLog(@"Date : %@", date);
break;
default:
break;
}
}
else if(currentPosition.x <= gestureStartPoint.x){
switch (self.segmentedControl.selectedSegmentIndex) {
case 0:
[dateComponents setDay:1];
self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
NSLog(@"Date : %@", date);
break;
case 1:
[dateComponents setMonth:1];
self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
NSLog(@"Date : %@", date);
break;
case 2:
[dateComponents setYear:1];
self.date = [gregorian dateByAddingComponents:dateComponents toDate:self.date options:0];
NSLog(@"Date : %@", date);
break;
default:
break;
}
}
Comment puis-je résoudre ???
Merci pour l'indication des heures. Pour le mois, je ne sais pas où je décrémente d'un jour ... J'ai fini de relire la classe entière et je ne vois pas d'erreurs de ce genre. Lorsque je force le composant dateComponents ([dateComponents setDay: 0], setMonth: 1 et setYear: 0 suivi d'un dateByAddingComponents), l'erreur est toujours exécutée ... – clement
En fait, j'ai dû mettre la dateComponents à 0 après l'avoir utilisée, si non, toutes les modifications à propos du composant datecomponent seront sauvegardées et désécurisées – clement