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]); 

OutPutNSDate mauvaise sortie quand ajouter à jour NSDate

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

j'ajouter 2 jours à cela. La nouvelle date devrait être « 19/05/2013 ?. Quelqu'un peut-il me dire ce que je tort? Merci d'avance.

+3

Êtes-vous sûr que 'day' est correctement réglé sur' 2'? - Et s'il vous plaît poster * code *, pas * captures d'écran *. –

+0

Oui, comme Matthias l'indique, vous n'avez jamais initialisé votre date NSDateComponents. Vous devez utiliser NSCalendar componentsFromDate pour initialiser les choses. –

+0

@HotLicks: Comparez le premier exemple (Listing 9) dans [Performing Calendar Calculations] (http://developer.apple.com/library/IOS/#documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html). –

Répondre

1

Je suppose que vous avez oublié d'initialiser le Si vous ajoutez

NSUInteger day = 2; 

variables day alors votre code produit le résultat attendu dans mon programme de test

1

Le init Methode de NSDateComponents n'initialise pas les composants. Ainsi, par exemple, l'année est non définie. Formulaire Apple documentation:..

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

Jetez un coup d'œil à [Performing Calendar Calculations] (http://developer.apple.com/library/IOS/#documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html): Vous n'avez qu'à définir les composants que vous vouloir ajouter. Par conséquent, je ne pense pas que cela réponde à la question. –