我正在处理我的应用程序上的这个功能。我必须展示一些不同时期的不同图形。通过滑动当前图表来选择周期。
我在使用 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
如您所见,小时有时会发生变化,但最大的问题是错过一个月(2008 年的第 10 个月)。
有为这些操作实现的代码:
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;
}
}
我该怎么解决???