2013-05-17 2 views
0
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]); 

ВыходнойNSDate неправильный выход, когда дополнительный день NSDate

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

добавить 2 дня до этого. Новая дата должна быть «2013-05-19 ?. Может кто-нибудь сказать мне, что я неправильно? Спасибо заранее.

+3

Вы уверены, что 'day' правильно установлен в' 2'? - И пожалуйста, напишите * код *, а не * скриншоты *. –

+0

Да, как указывает Маттиас, вы никогда не инициализировали дату NSDateComponents. Для инициализации необходимо использовать компоненты NSCalendarFromDate. –

+0

@HotLicks: Сравните первый пример (Листинг 9) в [Выполнение расчётов календаря] (http://developer.apple.com/library/IOS/#documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html). –

ответ

1

Я предполагаю, что вы забыли инициализировать переменную day Если добавить

NSUInteger day = 2; 

, то ваш код выдает ожидаемый результат в моей тестовой программе

1

init Methode из NSDateComponents не инициализирует компоненты. Таким образом, например, год не определено. Форма Apple, документация:..

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 
+0

Взгляните на [Выполнение расчётов календаря] (http://developer.apple.com/library/IOS/#documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html): вам нужно только установить компоненты, которые вы хочу добавить. Поэтому я не думаю, что это отвечает на вопрос. –

 Смежные вопросы

  • Нет связанных вопросов^_^