Я имею дело с этой функцией в моем приложении.Я должен показать несколько разных графиков из разных периодов.Период выбирается, проводя текущий график.
У меня есть некоторые проблемы с использованием DateComponents.Когда я тестирую приложение, я показываю дату, отредактированную dateByAddingComponents, и в консоли это выглядит так:
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
, как вы можете видеть, час меняется иногда, но самая большая проблема заключается вчто пропущен месяц (10-е число в 2008 году).
Для этих действий реализован код:
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;
}
}
Как я могу это решить ???