您好我正在使用以下代码在当前日期的不同日期获取日期 但我得到错误的结果 请检查
-(void)calculateDate
{
// NSArray *arrayOfNumbers = [NSArray arrayWithObjects:@"1","42",@"70",@"98", @"183",@"274",@"366",@"487", nil];
NSArray *arrayOfNumbers=[NSArray arrayWithObjects:@"1",@"6",@"10",@"14",@"26",@"39",@"52",@"70", nil];
NSMutableArray *dateArray=[[NSMutableArray alloc]init];
for (int i=0; i<[arrayOfNumbers count]; i++) {
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
int days=7 *[[arrayOfNumbers objectAtIndex:i] intValue];
dayComponent.day = days;// days from above array of weeks 1 then 6 then 14 etc
NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSDate* dateIncrementByWeek = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];
[dateArray addObject:dateIncrementByWeek];
}
NSLog(@"week dates=%@",dateArray);
}
这里显示错误的输出
2014-12-29 18:27:11 +0000",
"2015-02-02 18:27:11 +0000",
"2015-03-02 18:27:11 +0000",
"2015-03-30 18:27:11 +0000",
"2015-06-22 18:27:11 +0000",
"2015-09-21 18:27:11 +0000",
"2015-12-21 18:27:11 +0000",
"2016-04-25 18:27:11 +0000"
答案 0 :(得分:1)
输出对我来说是正确的,默认情况下NSLog将以UTC +00格式打印日期字符串(因此在输出上为+0000)。取决于您的时区,它将显示与系统时区不同的小时或天。
答案 1 :(得分:1)
当前日期不是2014年12月29日,之后是7 * 6 = 42天,它不应该是2015年2月2日
您没有打印当前日期,您看到的12月29日是您运行代码后的7天。
尝试使用从零开始的数字对象数组(NSNumber
):
NSArray *arrayOfNumbers = @[ @0, @1, @4, ... ];
[注意使用现代短序进行数组构建@[ ... ]
)和NSNumber
构造(@0
等。)]
您现在将看到它从当前日期(UTC)开始。
HTH