132 votes

Soustraire 7 jours de la date actuelle

Il semble que je ne puisse pas soustraire 7 jours de la date actuelle. Voici comment je le fais:

 NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:-7];
NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0];
 

SevenDaysAgo obtient la même valeur que la date actuelle.

S'il vous plaît aider.

EDIT: Dans mon code, j'ai oublié de remplacer la variable qui obtient la date actuelle par la bonne. Donc, le code ci-dessus est fonctionnel.

199voto

dymv Points 1342

code:

 NSDate *currentDate = [NSDate date];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:-7];
NSDate *sevenDaysAgo = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:currentDate options:0];
NSLog(@"\ncurrentDate: %@\nseven days ago: %@", currentDate, sevenDaysAgo);
[dateComponents release];
 

sortie:

 currentDate: 2012-04-22 12:53:45 +0000
seven days ago: 2012-04-15 12:53:45 +0000
 

Et je suis entièrement d'accord avec JeremyP.

BR.
Eugene

115voto

Novarg Points 4527

utilisez la méthode dateByAddingTimeInterval:

 NSDate *now = [NSDate date];
NSDate *sevenDaysAgo = [now dateByAddingTimeInterval:-7*24*60*60];
NSLog(@"7 days ago: %@", sevenDaysAgo);
 

sortie:

 7 days ago: 2012-04-11 11:35:38 +0000
 

J'espère que ça aide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X