Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将日期添加到NSDate时,NSDate输出错误_Iphone_Objective C_Nsdatecomponents - Fatal编程技术网

Iphone 将日期添加到NSDate时,NSDate输出错误

Iphone 将日期添加到NSDate时,NSDate输出错误,iphone,objective-c,nsdatecomponents,Iphone,Objective C,Nsdatecomponents,输出 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; NSLog(@"%@",dateString); // Retrieve NSDate instance from stringi

输出

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@",dateString);


// Retrieve NSDate instance from stringified date presentation
NSDate *dateFromString = [dateFormatter dateFromString:dateString];

// Create and initialize date component instance
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:2];

// Retrieve date with increased days count
NSDate *newDate = [[NSCalendar currentCalendar]
                   dateByAddingComponents:dateComponents
                   toDate:dateFromString options:0];

NSLog(@"Original date: %@", [dateFormatter stringFromDate:dateFromString]);
NSLog(@"New date: %@", [dateFormatter stringFromDate:newDate]);

我加了两天。新的日期应该是“2013-05-19”。有人能告诉我我错了什么吗?提前谢谢。

NSDateComponents的
init
方法不会初始化组件。因此,例如,年份是未定义的。形成苹果的文档:

   2013-05-17
   Original date: 2013-05-17
    New date: 1412647-09-06

我假设您忘记初始化
day
变量

An instance of NSDateComponents is not responsible for answering questions about a date beyond the 
information with which it was initialized. For example, if you initialize one with May 6, 2004,   
its weekday is NSUndefinedDateComponent

然后,您的代码会在我的测试程序中产生预期的结果。

您确定
day
已正确设置为
2
?-请发布代码,而不是屏幕截图。是的,正如Matthias所指出的,您从未初始化过NSDateComponents日期。您需要使用NSCalendar Components FromDate来初始化内容。@HotLicks:Compare thee中的第一个示例(清单9)。谢谢大家的回答。我的问题是day。现在我已经解决了。请看一下:您只需设置要添加的组件。因此,我认为这并不能回答问题。
NSUInteger day = 2;